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.
        
·         -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.







Comentarios

  1. Grupo Windows:¿Qué sucede cuando Android detecta que no hay los recursos necesarios para poder abrir una nueva aplicación?

    ResponderEliminar
    Respuestas
    1. Aunque 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.
      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.

      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 .

      Eliminar
  2. Este comentario ha sido eliminado por el autor.

    ResponderEliminar

Publicar un comentario

Entradas populares