Gestión de Procesos en Android
Gestión De Procesos
Al ser Android un sistema operativo diseñado para
dispositivos móviles, su funcionamiento está basado en el uso de aplicaciones,
las cuales pueden llamar una o varias funcionalidades básicas de dicho
dispositivo.
Android además de utilizar una máquina virtual, que
optimiza los recursos de memoria y de hardware, apoya su funcionamiento en un
entorno de ejecución (ANDROID RUNTIME), que se encarga del control sobre los
ciclos de ejecución y el manejo de memoria de alto nivel. Dentro de este
entorno se incluyen las Libreriascore, que contienen multitud de clases java y
la máquina virtual Dalvik.
En este sistema operativo cada aplicación es ejecutada en
su propio proceso, lo cual garantiza cargar los procesos en memoria solo cuando
van a ser utilizados debido al espacio reducido de memoria RAM; esto permite eliminar en mayor medida
los tiempos asociados a swapping de páginas en memoria, en caso de que un
proceso no utilizado solicite ser ingresado a memoria a través del AndroidRuntime,
una de las páginas debe ser retirada de memoria principal.
Los swapping o intercambio permiten al sistema operativo
crear un espacio para una nueva página eliminando alguna página de memoria
física, todo esto, en caso que un proceso necesite cargar una página virtual a
memoria física y no disponga de ninguna página de memoria física libre.
Cada aplicación de android corre en su propio proceso el
cual es creado por la aplicación cuando se ejecuta y permanece hasta que la
aplicación deja de trabajar o el sistema necesite memoria para otras
aplicaciones. Android sitúa cada proceso en una jerarquía de importancia donde prioriza los procesos existentes en el
sistema y decide cuales van a ser eliminados con el objetivo de liberar
recursos.
La
jerarquía viene dada de la siguiente manera:
-Procesos
en Primer Plano (Active Process):
los procesos activos o procesos en primer plano, son aquellos en donde existe
una interacción con el usuario, en términos técnicos se define asi:
Es un proceso que aloja una Activity( cada una de las pantallas o vistas que forman una aplicación)en la pantalla y con la que el usuario esta interactuando (su método on Resume () ha sido llamado) o que un intentReceiver está ejecutándose, los procesos serán eliminados si el sistema necesitase memoria.
Es un proceso que aloja una Activity( cada una de las pantallas o vistas que forman una aplicación)en la pantalla y con la que el usuario esta interactuando (su método on Resume () ha sido llamado) o que un intentReceiver está ejecutándose, los procesos serán eliminados si el sistema necesitase memoria.
·
-Procesos
visibles (visible process): son las actividades
visibles, pero no son en primer plano y no responden a eventos de usuarios.
·
-Procesos
de Servicio (startedServiceProcess):
este tipo de procesos no son visibles y suelen ser importantes para el usuario,
por ejemplo conexión con servidores y reproducción de música.
·
-Procesos
en segundo plano (BackGroundProcess):
incluye aquellas actividades que no son visibles y están en ejecución,
generalmente hay muchos tipo de este proceso en el sistema, por lo que el
sistema mantiene una lista (llamada LRU, menos usada recientemente) para
asegurarse que el último proceso visto por el usuario sea el último en
eliminarse en caso de necesitar memoria.
· -Procesos
vacíos ( EMPTYPROCESS): es un proceso que no aloja ningún componente,
se utilizan para mejorar el rendimiento general del sistema, además de tener
una cache disponible de la aplicación para su próxima activación. El sistema
elimina este tipo de procesos con frecuencia para obtener memoria disponible.
CICLO DE VIDA DE LOS
PROCESOS
El
usuario al utilizar su teléfono móvil no está interesado en saber la forma como
éste funciona, simplemente es consciente de que mediante un simple clic pasa de
una a otra aplicación y puede volver a cualquiera de ellas en el momento que lo
desee, no debe preocuparse sobre cuál es la aplicación que realmente está
activa, cuanta memoria está consumiendo, ni si existen o no recursos
suficientes para abrir una aplicación adicional. Todo esto son tareas propias
del sistema operativo.
Android mantiene tantos procesos como permitan los
recursos del dispositivo. Cada proceso, correspondiente a una aplicación,
estará formado por una o varias actividades independientes llamadas componentes Activity de esa
aplicación. Cuando el usuario navega de una actividad a otra, o abre una nueva
aplicación, el sistema “pospone” dicho proceso y realiza una copia de su estado
para poder recuperarlo más tarde. El proceso y la actividad siguen existiendo
en el sistema, pero están en”standby” y su estado ha sido guardado.
Cada uno de los componentes básicos de Android tiene un
ciclo de vida bien definido, a continuación se describen cada uno de ellos:
-OnCreate(), onDestroy()
Abarcan
todo el ciclo de vida. Cada uno de estos métodos, representan el principio y el
fin de la actividad.
-OnStart(), onStop()
Representan
la parte visible del ciclo de vida. Desde onStart() hasta onStop(), la
actividad será visible para el usuario, aunque es posible que no tenga el foco
de acción por existir otras actividades superpuestas con las que el usuario
está interactuando. Pueden ser llamados múltiples veces.
-OnResume(), onPause()
Delimitan la parte útil del ciclo de vida.
Desde onResume() hasta onPause(), la actividad no sólo es visible, sino que
además tiene el foco de la acción y el usuario puede interactuar con ella.
El proceso que mantiene a esta Activity puede ser
eliminado cuando se encuentra en onPause() o en onStop(), es decir, cuando no
tiene el foco de la aplicación. (Android nunca elimina procesos con los que el
usuario está interactuando en ese momento). Una vez se elimina el proceso, el
usuario desconoce dicha situación y puede incluso volver atrás y querer usarlo
de nuevo. Entonces el proceso se restaura gracias a una copia y vuelve a estar
activo como si no hubiera sido eliminado.
Aunque los recursos son siempre limitados, en el momento
en el que Android detecta que no hay los recursos necesarios para poder abrir
una nueva aplicación, analiza los procesos existentes en ese momento y elimina
los procesos que sean menos prioritarios para poder liberar sus recursos.
Cuando el usuario regresa a una actividad que está en
estado standby, el sistema simplemente la activa. En este caso, no es necesario
recuperar el estado guardado porque el proceso todavía existe y mantiene el
mismo estado. Sin embargo, cuando el usuario quiere regresar a una aplicación
cuyo proceso ya no existe porque se necesitaba liberar sus recursos, Android lo
crea de nuevo y utiliza el estado previamente guardado para poder restaurar una
copia fresca del mismo.
Comunicación entre procesos
Android ofrece un mecanismo para comunicación entre
procesos (IPC) Binder, se trata de una parte esencial para Android pues es la
que permite a los procesos, las aplicaciones en ejecución, relacionarse con
otros procesos de otras partes del sistema, en el caso de cuando se abre una
aplicación, establece una comunicación entre el proceso del sistema y el de la
aplicación para que la aplicación sepa que se ha abierto.
Grupo Windows:¿Qué sucede cuando Android detecta que no hay los recursos necesarios para poder abrir una nueva aplicación?
ResponderEliminarAunque los recursos son siempre limitados, ANDROID analiza los procesos existentes en ese momento y elimina los procesos de menor prioridad para poder liberar sus recursos.
EliminarAndroid mantiene tantos procesos como permitan los recursos del dispositivo. Cada proceso, correspondiente a una aplicación, estará formado por una o varias actividades independientes llamadas componentes Activity de esa aplicación. Cuando el usuario navega de una actividad a otra, o abre una nueva aplicación, el sistema “pospone” dicho proceso y realiza una copia de su estado para poder recuperarlo más tarde. El proceso y la actividad siguen existiendo en el sistema, pero están en” standby” y su estado ha sido guardado.
Android también se apoya en la memoria cache del dispositivo para gestionar sus recursos, ya que los datos de caché guardan datos temporales de la aplicación cuya función principal es facilitar un acceso rápido por parte del sistema a la información almacenada y de esta forma se accede a la información de las aplicaciones de manera más rápida y ágil .
Este comentario ha sido eliminado por el autor.
ResponderEliminar