ESTADOS
Los estados en los que puede estar una Activity en Android son:
- NON-EXIST
- STOPPED: no visible
- PAUSED: visible
- RUNNING: visible y en foreground
Las transiciones entre estados y las funciones de la Activity invocadas son las siguientes:
- NON-EXIST --> STOPPED: onCreate()
- STOPPED --> PAUSED: onStart()
- PAUSED --> RUNNING: onResume()
- RUNNING --> PAUSED: onPause() y onSaveInstanceState()
- PAUSED --> STOPPED: onStop()
- STOPPED --> NON-EXIST: onDestroy()
EVENTOS QUE CAUSAN CAMBIOS DE ESTADO
Lanzar la Activity
Pasa de estado NON-EXIST a estado RUNNIG, invocándose las siguientes funciones:
- onCreate()
- onStart()
- onResume()
Pulsar Back
Pasa de estado RUNNIG a estado NON-EXIST, invocándose las siguientes funciones:
- onPause()
- onSaveInstanceState()
- onStop()
- onDestroy()
Pulsar Home
Pasa de estado RUNNIG a estado STOP, invocándose las siguientes funciones:
- onPause()
- onSaveInstanceState()
- onStop()
Abrir la aplicación en recientes después de Home
Pasa de estado STOP a estado RUNNING, invocándose las siguientes funciones:
- onStart()
- onResume()
Abrir la aplicación en recientes después de Back
Pasa de estado NON-EXIST a estado RUNNING, invocándose las siguientes funciones:
- onCreate()
- onStart()
- onResume()
Rotar dispositivo
Pasa de estado RUNNIG a estado RUNNING, invocándose las siguientes funciones:
- onPause()
- onSaveInstanceState()
- onStop()
- onDestroy()
- onCreate()
- onStart()
- onResume()
Lanzar otra Activity desde la Activity
Pasa de estado RUNNIG a estado STOP, invocándose las siguientes funciones:
- onPause()
- onSaveInstanceState()
- onStop()
Pulsar Back en la otra Activity
Pasa de estado STOP a estado RUNNING, invocándose las siguientes funciones:
- onStart()
- onResume()
CÓMO VE EL S.O. ANDROID LAS ACTIVITIES
Cuando el usuario pulsa sobre una aplicación en su móvil o tablet Android, el sistema operativo no arranca la aplicación, sino que arranca una Activity y la pone en estado RUNNING.
Normalmente, las aplicaciones contienen múltiples activities, ¿cuál de ellas se arranca? Esto viene definido en el fichero AndroidManifest.xml. Una activity tendrá definido:
dentro de
Si desde la Activity inicial se arranca otra Activity, el sistema arrancará la nueva Activity y la pondrá en estado RUNNING (encima de la anterior). Estas dos actividades están en el stack de actividades de Android.
Si se pulsa Back, la actividad actual se destruye y vuelve la actividad inicial a estado RUNNING (el mismo efecto se consigue invocando el método finish() ).
Si se pulsa Back en la actividad inicial, se destruye la Activity inicial y volveremos donde estábamos antes de arrancar la aplicación.
El responsable de realizar todas estas tareas es el ActivityManager de Android, el cual mantiene un stack de actividades compartido entre todas las aplicaciones.