En la mayoría de los casos, una aplicación Android se ejecuta en su propio proceso de Linux. Este proceso es creado para la aplicación cuando la arrancamos y seguirá corriendo hasta que no sea necesario y el sistema reclame recursos para otras aplicaciones y se los de a éstas.
Así es, el tiempo de vida de un proceso en Android es manejada por el sistema operativo, basándose en las necesidades del usuario, los recursos disponibles, etc. Si tenemos una aplicación que está consumiendo muchos recursos y arrancamos otra nueva aplicación, el sistema operativo probablemente le diga a la aplicación que se queda en segundo plano que libere todo lo que pueda, y si es necesario la cerrará.
En Android los recursos son normalmente muy limitados y por eso el sistema operativo tiene más control sobre las aplicaciones que en programas de escritorio.
Para determinar qué procesos eliminar ante un escenario dónde el dispositivo tenga poca batería u otros en los que sea de relevante importancia administrar los recursos, Android les asigna una prioridad a cada uno de ellos basándose en la siguiente jerarquía:
- Foreground Process: Es la aplicación que contiene la actividad ejecutada en primer plano en la pantalla del usuario y con la cuál está interactuando ahora mismo (Se ha llamado a su método onResume()). Por lo regular habrá muy pocos procesos de este tipo corriendo a la vez en el sistema y son aquellos que se eliminarán como última opción si la memoria es tan baja que ni matando al resto de procesos tenemos los recursos necesarios.
- Visible Process: Es un proceso que aloja una Activity que no se está ejecutando en primer plano (es decir, su método onPause() ha sido llamado). Un ejemplo puede ser la aplicación de correo en la cuál demos click en algún enlace de interés que nos lance el navegador, este pasaría a ser el Foreground Process dejando a la aplicación de correo en el concepto de Visible Process. Este tipo de procesos se cerrarán únicamente cuando el sistema no tenga los recursos necesarios para mantener corriendo todos los procesos que estén en primer plano.
- Service Process: Son aquellos que corren cuando un Service ha sido invocado. Estos procesos hacen cosas en segundo plano que normalmente son importantes para el usuario (conexión con servidores, actualización del GPS, reproductor de música, etc.), el sistema nunca va a liquidar un servicio a menos que sea necesario para mantener vivos todos los Visible y Foreground.
- Background Process: Es un proceso que contiene una Activity que actualmente no es visible por el usuario y que ya no tienen demasiada importancia. Por ejemplo, los programas que arrancó el usuario hace tiempo y no los ha vuelto a usar, pasan a estar en background. Por eso es importante que cuando nuestra aplicación pase a Background, el sistema libere, en la medida de lo posible, todos los recursos que pueda para que su rendimiento sea óptimo.
- Empty Process: Es un proceso que no aloja ningún tipo de componente. Su razón de ser es el de tener una caché disponible para la próxima aplicación que lance el usuario. Es común que el sistema elimine este tipo de procesos con frecuencia para así poder obtener memoria disponible.
Una vez entendido esto podemos pasar a conocer a las actividades y su ciclo de vida. Espero que este post te haya sido de utilidad, ¡saludos!.
0 comentarios:
Publicar un comentario