Explication de l’affinité de la tâche Android

À quoi sert l’atsortingbut taskAffinity ? J’ai parcouru la documentation mais je ne comprenais pas grand chose.

Quelqu’un peut-il expliquer l’affinité de la tâche en termes simples?

À quoi sert Android Task Affinity?

Une application Android a des activités qui forment une stack comme un jeu de cartes. Si vous lancez une application Android, et lancez cinq activités A, B, C, D, E. Ils vont former une stack

 E - chat view D - weather screen C - map view B - weather screen A - login screen 

E était la dernière activité à démarrer et elle est affichée. Si vous fermez E, D sera affiché. Si vous fermez D, C sera affiché. etc.

Notez que les activités B et D sont la même activité. Que faire si l’utilisateur devait apporter des modifications à l’ D weather screen , puis décider de fermer l’activité, puis fermer la C Map view ?

L’utilisateur serait alors de retour à l’écran météo et l’utilisateur serait mécontent car les modifications apscopes à l’ D weather screen niveau D weather screen n’étaient pas enregistrées dans l’ B weather screen niveau B weather screen Bien que ce soit la même activité, c’est un état différent de cette activité.

L’utilisateur disposait d’une stack de 5 couches d’activités et deux d’entre elles avaient la même activité. Faire sauter tous les 5 de la stack créera le phénomène où vous interagirez avec deux versions différentes de la même activité et peut être assez déroutant.

Les utilisateurs ne pensent généralement pas en termes de stack rigide d’activités. Ils pensent: “ooh la vue météo, je vais faire un changement là-bas” et ensuite ils veulent retourner à la vue Carte. Puis sauvegardez à nouveau parce qu’ils veulent revenir à l’écran de connexion. Pourquoi l’ B weather app s’affiche-t-elle et pourquoi n’a-t-elle pas sauvegardé les parameters du niveau D ?

Le programmeur pourrait être en mesure de dissiper une certaine confusion si les activités B et D étaient liées en état. De cette façon, les changements à l’un changent l’autre. Chaque fois que l’utilisateur ouvre un nouvel écran météo, il ouvre secrètement l’instance unique de l’écran météo.

Dans ces circonstances, modifier la tâcheAffinity de l’activité peut être souhaitable. L’utilisateur changerait de niveau D. Puis remonter au niveau B. Et voir les modifications apscopes à B à D.

Le programme conserve une stack que vous pouvez sauvegarder, ce qui est bien, et quand l’utilisateur ouvre des instances X de la même activité dans des endroits aléatoires, ils sont tous un.

Diaporama avec plus d’explications: http://www.slideshare.net/RanNachmany/manipulating-android-tasks-and-back-stack

L’affinité indique à quelle tâche une activité préfère appartenir.

L’affinité entre en jeu dans deux circonstances:

Lorsque l’intention qui lance une activité contient l’indicateur FLAG_ACTIVITY_NEW_TASK.

Lorsqu’une activité a son atsortingbut allowTaskReparenting défini sur “true”.

S’il vous plaît se référer http://developer.android.com/guide/components/tasks-and-back-stack.html