ANDROID: Estado de actividad después de pulsar el botón de retroceso
Imagine que tiene la siguiente secuencia de actividades:
Activity A -> Activity B -> Activity C
Cuando usted está en la actividad C, presionando el botón de la parte posterior nativa, le lleva a la actividad B. ¿Cuál es el estado de la actividad C? ¿Todavía está en la memoria o se ha terminado?
- ¿Android pasa información persistente en paquetes o usa un patrón singleton?
- IllegalArgumentException cuando se utiliza Otto con un fragmento retenido
- Animación al inicio de la actividad salta
- Tener una instancia de actividad
- La actividad no llamó a terminar? (API 23)
Si todavía está en la memoria, ¿hay alguna manera de reanudar la actividad? Aparte de iniciar otra instancia de esta actividad …
Debo añadir que este es el caso estándar en el que no se utilizan banderas como: FLAG_ACTIVITY_CLEAR_TOP
- En Activity.onCreate (), ¿por qué Intent.getExtras () a veces devuelve null?
- ¿Cómo usar onResume ()?
- Android onStop () no se llama al iniciar una nueva actividad en modo multi-ventana
- ¿Puede Android matar a mi aplicación mientras está en medio de una ejecución de bucle?
- RxJava se vuelve a suscribir al evento tras la restauración de la actividad
- ¿Es realmente necesario RoboSpice shouldStop ()?
- ¿Cómo se "restaurará" la actividad del androide después de que se haya matado su proceso?
- Android: mantiene varias instancias de una actividad en la pila posterior
Es posible que desee considerar la lectura de los documentos oficiales .
Más específicamente la parte que responde a su pregunta:
Cuando el usuario presiona el botón Atrás, la actividad actual se dispara desde la parte superior de la pila (la actividad se destruye) y se reanuda la actividad anterior (el estado anterior de su interfaz de usuario se restaura).
Ahora, para su segunda pregunta … puede seguir leyendo la misma página …
Cuando inicia una actividad, desea llevar adelante una instancia existente de la misma (en lugar de crear una nueva instancia en la parte superior de la pila trasera)
Así que si usted lee eso … usted encontrará …
Puede hacer estas cosas y más, con atributos en el elemento manifiesto y con indicadores en la intención que pasa a startActivity ().
En este sentido, los atributos principales que puede utilizar son:
TaskAffinity launchMode allowTaskReparenting clearTaskOnLaunch alwaysRetainTaskState finishOnTaskLaunch
Y los indicadores principales de intención que puede usar son:
FLAG_ACTIVITY_NEW_TASK FLAG_ACTIVITY_CLEAR_TOP FLAG_ACTIVITY_SINGLE_TOP
El comportamiento predeterminado es que al presionar el botón "atrás" del hardware, la actividad actual se eliminará de la pila posterior y se iniciará la secuencia de actividad "destruir". A partir de ese momento no debe confiar en el hecho de que podría estar en algún lugar alrededor – es todo hasta Android para decidir cuándo realmente matar esta actividad.
Lo que mis investigaciones anteriores demuestran es que onDestroy()
la víctima será llamado sólo cuando la nueva actividad esté onDestroy()
y esté inactiva.
Puede especificar android:launchMode="singleInstance"
para su actividad en Manifest. Esto asegurará que sólo se crea una instancia de actividad en ese momento
No, no está en la memoria. Se termina cuando se presiona el botón Atrás. Debería usar android:launchMode="singleTask"
en androidmanifest.xml
para esa actividad en particular para la que no desea crear nuevas instancias si ya existe una instancia. Para más información, este enlace será útil.
En la siguiente secuencia …
Activity A -> Activity B -> Activity C
Cuando pulse el botón Atrás en la Activity C
entonces se onBackPressed()
método onBackPressed()
. El comportamiento predeterminado de onBackPressed()
es finalizar la actividad actual hasta que se Override
la funcionalidad.
Por lo tanto, en caso normal, después de volver a pulsar la Activity
actual se destruirá y no se puede encontrar en la Activity Stack
, por lo que no puede reanudarlo.
Encontrará más información en el documento de Android Developer en el enlace …
Tareas y pila trasera
- Android termina las actividades anteriores para la navegación
- Icono de Lanzador y actividad separado con Android