mardi 5 mars 2013

Astuces Android : Task Affinity

Pendant que je développe ma première application Android, je partagerai avec vous quelques astuces que je trouverai bien utiles et qui peuvent vous faire gagner des heures de recherche.

Cette fois je vous parlera des Tasks, qui, quand on débute sur Android il est pas évident de comprendre comment ils se comporent.
Tout d'abord, Les Tasks dans Android sont des groupes d'activités qui appartiennent a une ou plusieurs applications.

Problème :
Les Tasks sont importants surtout dans le cas où vous développez une application qui gère 2 ou plusieurs activités. Par défaut, toutes les activités que sont instanciés par votre application appartiennent au même et unique Task qui porte comme identifiant le nom de package de l'application, ce comportement par défaut peut provoquer des problèmes dans certains cas précis.

Exemple : dans le cas où on a une MainActivity qui consiste dans notre activité principale et une WidgetActivity qui est lancée par le Widget de notre application. On veut que les 2 activités soient totalement indépendantes, mais en faisant le test j'ai remarqué que lorsque les 2 activités sont en arrière plan, la relance de la WidgetActivity fait apparaître MainActivity au même temps ! Ceci est dû au faite que les 2 appartiennent au même Task.

Solution :
Dans le AndroidManifest.xml vous utilisez l'attribut android:taskAffinity
Cet attribut permet de grouper les activités comme on le souhaite, pour l'exemple que j'ai donné il suffit d'ajouter au WidgetActivity l'attribut android:taskAffinity="", ce qui permettra à notre WidgetActvity de lancer dans un Task a part.
Dans le cas où on veut grouper plusieurs activités dans le même Task on ajoute l'attribut à ces activités avec la même valeur pour les activités appartenant au même Task. (exemple : "task1" pour "Activity1" et "Activity2"; "task2" pour "Activity3").

J'espère que ce petit article vous permettra de gagner du temps, à bientôt !

Aucun commentaire:

Enregistrer un commentaire