¿Para qué se taskAffinity
utiliza exactamente el atributo ? Revisé la documentación pero no pude entender mucho.
¿Alguien puede explicar la afinidad de tareas en términos simples?
android
android-manifest
taskaffinity
Traxex1909
fuente
fuente
Respuestas:
¿Para qué se utiliza la afinidad de tareas de Android?
Una aplicación de Android tiene actividades que forman una pila como una baraja de cartas. Si inicia una aplicación de Android y comienza cinco actividades A, B, C, D, E. Formarán una pila
E fue la última actividad que se inició y se muestra. Si cierra E, se mostrará D. Si cierra D, se mostrará C. etc.
Observe que Actividades
B
yD
son la misma actividad. ¿Qué pasaría si el usuario hiciera algunas modificaciones en elD weather screen
, y luego decidiera cerrar la actividad, luego cerrar elC Map view
?Entonces, el usuario volvería a la pantalla del clima y no estaría contento porque los cambios realizados en el nivel
D weather screen
no se guardaron en el nivelB weather screen
. Aunque es la misma actividad, es un ESTADO diferente de esa actividad.El usuario tenía una pila de actividades de 5 capas y dos de ellas eran la misma actividad. Sacar los 5 de la pila creará el fenómeno en el que interactuará con dos versiones diferentes de la misma actividad y puede ser bastante confuso.
Los usuarios no suelen pensar en términos de una pila rígida de actividades. Piensan: "Oh, la vista del clima, haré un cambio allí" y luego quieren volver a la vista del Mapa. Luego, retroceda de nuevo porque desea volver a la pantalla de inicio de sesión. ¿Por qué se
B weather app
muestra y por qué no guardó la configuración del nivelD
?El programador podría aliviar cierta confusión si Actividades
B
yD
estuvieran vinculados en estado. De esa manera cambia a uno cambia al otro. Cada vez que el usuario abre una nueva pantalla meteorológica, secretamente abre la única instancia de la pantalla meteorológica.En estas circunstancias, puede ser deseable cambiar el taskAffinity de la actividad. El usuario cambiaría el nivel D. Luego volvería al nivel B. Y vería los cambios en B que se hicieron a D.
El programa mantiene una pila a través de la cual puede hacer copias de seguridad, lo cual es bueno, y cuando el usuario abre X instancias de la misma actividad en lugares aleatorios, todas son una.
Presentación de diapositivas con más explicación: http://www.slideshare.net/RanNachmany/manipulating-android-tasks-and-back-stack
fuente
singleInstance
lugar de usar eltaskAffinity
?taskAffinity
en absoluto :-( La explicación es vaga. Increíble que estas respuestas obtengan tantos votos a favor.taskAffinity
se usa para especificar el nombre de la tarea en la que la actividad prefiere ejecutarse. Cuando unIntent
contiene la banderaFLAG_ACTIVITY_NEW_TASK
, la actividad se coloca en esta tarea en particular (definida portaskAffinity
).Although it's the same activity, it's a different STATE of that activity.
Yo diría: "Es otro ejemplo de esa actividad".La afinidad indica a qué tarea prefiere pertenecer una actividad.
La afinidad entra en juego en dos circunstancias:
Cuando la intención que lanza una actividad contiene la bandera FLAG_ACTIVITY_NEW_TASK.
Cuando una actividad tiene su atributo allowTaskReparenting establecido en "true".
Consulte http://developer.android.com/guide/components/tasks-and-back-stack.html
fuente
Puede encontrar todos los casos (y algunas veces casos extremos) en esta presentación detallada
Por favor, consulte Manipulación de tareas y back stack de Android
fuente