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?

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

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

  • Flag Activity Clear Top destruye la actividad objetivo y que la crea
  • Ciclo de vida de Android que el evento disparó sólo una vez durante el ciclo de vida?
  • ¿Cómo ejecutar una tarea de fondo cuando la aplicación de Android está cerrada / configurada como fondo?
  • AsyncTask & runtime config change: ¿qué enfoques, con ejemplos de código conciso, respalda el equipo de Android?
  • onDestroy () se llama cuando se presiona el botón de retroceso
  • Diferencia entre setContentView y LayoutInflater
  • Android: ¿En qué circunstancias podría aparecer un diálogo que cause onPause ()?
  • Abra / cierre correctamente una base de datos con el patrón de diseño Singleton
  • Manteniendo los hilos y el estado de la conexión en la aplicación de Android usando onSaveInstanceState?
  • Cuándo guardar los datos en la base de datos, onPause () o onStop ()?
  • Android Lifecycle: ¿Se supone que onResume () se llamará durante el inicio?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.