Saltar a contenido

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 en onResume() (pantalla activa).
    • Un BroadcastReceiver en ejecución.
    • Un Service ejecutando código en sus callbacks (onCreate, onStart, onDestroy).
  • Se eliminan solo como último recurso.

Procesos visibles

  • El usuario los percibe, aunque no estén en primer plano.
  • Ejemplos:

    • Una Activity en onPause() (visible detrás de un diálogo).
    • Un Service iniciado como foreground service.
    • Servicios visibles para el usuario (teclado, fondo animado…).
  • Son importantes y se eliminan solo si es imprescindible.

Procesos de servicio

  • Contienen un Service iniciado con startService().
  • 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 estado onStop().
  • Son los primeros en eliminarse cuando falta memoria.
  • Se gestionan con una lista de tipo LRU (Least Recently Used).