example - Explicación de afinidad de tareas de Android
manifest android activity (2)
¿Para qué se utiliza Android Task Affinity?
Una aplicación de Android tiene Actividades que forman una pila como una baraja de cartas. Si inicia una aplicación para Android, inicie cinco actividades A, B, C, D, E. Ellos formarán una pila
E - chat view
D - weather screen
C - map view
B - weather screen
A - login screen
E fue la última actividad que se inició y se muestra. Si cierra E, D se mostrará. Si cierra D, se mostrará C. etc.
Tenga en cuenta que las Actividades B
y D
son la misma actividad. ¿Qué sucede si el usuario debe realizar algunas modificaciones en la D weather screen
y luego decide cerrar la actividad y luego cierra la C Map view
?
Luego, el usuario estaría de vuelta en la pantalla del clima y el usuario no estaría contento porque los cambios realizados en la D weather screen
nivel D weather screen
no se guardaron en la B weather screen
nivel B 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 de la misma actividad. Saltar los 5 puntos de la pila creará el fenómeno en el que interactuarás con dos versiones diferentes de la misma actividad y puede ser bastante confuso.
Los usuarios generalmente no piensan en términos de una pila rígida de actividades. Piensan: "ooh, la vista del clima voy a hacer un cambio allí" y luego quieren volver a la vista del mapa. Luego, vuelva a hacer una copia de seguridad porque quieren volver a la pantalla de inicio de sesión. ¿Por qué se muestra la B weather app
y por qué no guardó las configuraciones del nivel D
?
El programador podría aliviar cierta confusión si las actividades B
y D
estuvieran vinculadas en el estado. De esa forma, los cambios en uno cambian al otro. Cada vez que el usuario abre una nueva pantalla de clima, secretamente abre la instancia única de la pantalla de clima.
En estas circunstancias, cambiar la tarea Afinidad de la actividad puede ser deseable. El usuario cambiaría el nivel D. Luego, volverá al nivel B. Y verá los cambios en B que se hicieron a D.
El programa mantiene una pila que puede respaldar, lo que 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 explicaciones: http://www.slideshare.net/RanNachmany/manipulating-android-tasks-and-back-stack
¿Para qué se utiliza exactamente el atributo taskAffinity
? He revisado la documentation pero no pude entender mucho.
¿Alguien puede explicar la afinidad de la tarea en términos legos?
La afinidad indica a qué tarea prefiere pertenecer una actividad.
La afinidad entra en juego en dos circunstancias:
Cuando el intento de iniciar una actividad contiene el indicador FLAG_ACTIVITY_NEW_TASK.
Cuando una actividad tiene su atributo allowTaskReparenting establecido en "verdadero".
Consulte http://developer.android.com/guide/components/tasks-and-back-stack.html