Ciclo de vida de una aplicación en Android¶
Procesos en Android¶
- Cada aplicación se ejecuta normalmente en su propio proceso de Linux.
- El proceso se crea cuando la app lo necesita y se destruye cuando el sistema requiere memoria.
-
La duración del proceso no la controla la app, sino el sistema, que decide según:
-
Componentes activos (Activity, Service, BroadcastReceiver).
- Importancia para el usuario.
- Memoria disponible.
Cuidado
Mal uso de componentes (ej. BroadcastReceiver
que lanza un hilo y termina su método onReceive()
) puede hacer que el proceso se elimine inesperadamente.
Solución: usar JobService u otros mecanismos gestionados por el sistema.
Jerarquía de importancia de procesos¶
El sistema clasifica los procesos según su importancia. Esta jerarquía define qué procesos se eliminan primero en caso de falta de memoria:
Procesos en primer plano¶
- Relacionados con lo que el usuario está haciendo en ese momento.
-
Ejemplos:
- Una
Activity
enonResume()
(pantalla activa). - Un
BroadcastReceiver
en ejecución. - Un
Service
ejecutando código en sus callbacks (onCreate
,onStart
,onDestroy
).
- Una
-
Se eliminan solo como último recurso.
Procesos visibles¶
- El usuario los percibe, aunque no estén en primer plano.
-
Ejemplos:
- Una
Activity
enonPause()
(visible detrás de un diálogo). - Un
Service
iniciado como foreground service. - Servicios visibles para el usuario (teclado, fondo animado…).
- Una
-
Son importantes y se eliminan solo si es imprescindible.
Procesos de servicio¶
- Contienen un
Service
iniciado constartService()
. - No se ven, pero suelen realizar tareas de interés (ej. descargas, reproducción de música).
- Se mantienen en memoria mientras sea posible, salvo falta grave de recursos.
- Con el tiempo (ej. >30 min), su prioridad puede bajar.
Procesos almacenados en caché¶
- No se usan actualmente, pero se guardan para que la app se abra más rápido.
- Ejemplo:
Activity
en estadoonStop()
. - Son los primeros en eliminarse cuando falta memoria.
- Se gestionan con una lista de tipo LRU (Least Recently Used).