Pregunta

He leído el desarrollador de android guía y algunos artículos en internet, todavía estoy confuso acerca de la singleTask launchmode.Veamos un ejemplo:

El usuario inicie la App1, android comienza una nueva tarea.Asumir la App1 crea actividades complementarias en orden:

ActivityA -> ActivityB -> ActivityC

Que es como tarea1 parece.

Entonces el usuario haga clic en el boton y elegir el lanzamiento de App2, así tarea1 va en segundo plano y android iniciar una nueva tarea:task2, el usuario hace algo:

ActivityD -> ActivityE

ahora digamos ActivityE intente iniciar ActivityB y ActivityB tiene la launchmode singleTask.

Lo que yo entiendo es que tarea1 viene de frontend de nuevo y task2 pasa a segundo plano.Y tarea1 ve ahora como esta:

ActivityA -> ActivityB

Lo que significa:

  1. El ActivityC será removido de tarea1 y ActivityB vuelve a la Actividad principal.

  2. Si el usuario ahora haga clic en el botón "Atrás", él vendrá a ActivityA de tarea1 en lugar de regresar a la ActivityE de task2

Estoy en lo cierto?

Gracias

¿Fue útil?

Solución

El ActivityC será retirado de la tarea1 y ActivityB vuelve a la Actividad principal.

Sí tienes razón...

ActivityC será eliminado de decirel método onDestroy de la ActivityC será llamado.Por lo tanto, cuando el usuario inicia la Tarea 1 de nuevo, la ActivityB se muestra en lugar de ActivityC.

Se han creado 2 Tareas (Proyectos) y se cargan de la misma @ SendSpace.Probarlo...

Si usted mira los androides documentación dice

"A "singleTask" la actividad que permite que otras actividades a ser parte de su tarea.Siempre en la raíz de su tarea, pero otras actividades (necesariamente "estándar" y "singleTop" actividades) puede ser lanzadas en esa tarea."

Lo que significa que cuando usted haga clic en el botón de inicio que todas las actividades por encima de la sola actividad de tarea (que en tu caso es ActivityB) se elimina de la pila.

En la aplicación de ejemplo que había dado antes, si usted acaba de ejecutar el proyecto "AndroidTest" y haga clic en el botón de inicio en los registros se puede ver que la 2ª Actividad se pone en Pausa, y al iniciar de nuevo desde el "Reciente de la Aplicación de la" lista de la 2ª Actividad es Destruido.

En un senario donde la Actividad de la encima de la Única Instancia de actividades (ActivityB) no se quitan de la parte Posterior de la Pila, y otro de solicitud de esta Actividad (ActivityB) no puede ser demostrado y la intención puede ser bajado.Pero esto ha extreamly menos posibilidades de que suceda, ya que el usuario tendrá que pulsar el botón de Inicio, pero la Tarea actual\App en el BackStack antes de que pudiera desplazarse a otra Tarea\App.

De ahí la advertencia

Los otros modos — singleTask y de instancia única — no son adecuados para la mayoría de las aplicaciones, ya que resulta en un modelo de interacción que puedan ser desconocidos para los usuarios y es muy diferente de la mayoría de otras aplicaciones.

Espero que esto aclare tu duda.

Otros consejos

Que el sonido de la derecha.

¿Por qué no probarlo.

También hay una aplicación que puede ayudar a explicar el modo del lanzamiento:

https://play.google.com/store/apps/details?id=com.novoda.demos.activitylaunchmode

enter image description here

Las fuentes están en https://github.com/gnorsilva/Activities-LaunchMode-demo

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top