web-dev-qa-db-fra.com

Android Explication de l'affinité des tâches

A quoi sert exactement l'attribut taskAffinity? J'ai parcouru le documentation mais je ne comprenais pas grand chose.

Quelqu'un peut-il expliquer l'affinité des tâches en termes simples?

95
Traxex1909

Qu'est-ce que Android Affinité des tâches utilisé??

Une application Android contient des activités qui forment une pile, comme un jeu de cartes. Si vous démarrez une application Android, et démarrez cinq activités A, B, C, D, E. Ils formeront une pile

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 visible. 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é. Et si l’utilisateur modifiait le D weather screen, puis a décidé de fermer l'activité, puis fermez le C Map view?

Ensuite, l'utilisateur serait de retour à l'écran météo et il serait mécontent des modifications apportées au niveau D weather screen n'ont pas été enregistrés au niveau B weather screen. Bien que ce soit la même activité, c'est un état différent de cette activité.

L'utilisateur avait une pile d'activités sur 5 couches, dont deux étaient la même activité. En éliminant les 5 éléments de la pile, vous créez le phénomène d'interaction avec deux versions différentes de la même activité, ce qui peut être assez déroutant.

Les utilisateurs ne pensent généralement pas en termes de pile d'activités rigides. Ils pensent: "ooh la vue météo, je vais faire un changement là-bas" et ensuite, ils veulent revenir à la vue Carte. Ensuite, sauvegardez à nouveau car ils veulent revenir à l'écran de connexion. Pourquoi est-ce que B weather app montrant et pourquoi n’a-t-il pas sauvegardé les paramètres du niveau D?

Le programmeur pourrait peut-être dissiper une certaine confusion si les activités B et D étaient liées en état. De cette façon, l'un change 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, il peut être souhaitable de modifier la tâche taskAffinity de l'activité. L'utilisateur changerait de niveau D. Puis remonter au niveau B. Et voir les changements dans B qui ont été apportés à D.

Le programme conserve une pile sur laquelle vous pouvez effectuer une sauvegarde, à savoir Nice, et lorsque l'utilisateur ouvre X instances de la même activité à des endroits aléatoires, elles ne forment plus qu'une.

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

154
Eric Leschinski

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 attribut allowTaskReparenting défini sur "true".

Veuillez vous référer à http://developer.Android.com/guide/components/tasks-and-back-stack.html

7
hitesh141