Ciclo de vida
Una
actividad es cuando nosotros solamente tenemos una pantalla que el usuario ve en un dispositivo al mismo tiempo, normalmente, una aplicación tiene múltiples actividades, y el usuario va intercambiando entre estas, por lo que podemos decir que las actividades son la parte más visible de una aplicación en Android.
Esto es muy frecuente ver por ejemplo en páginas web en donde tenemos varias páginas, por ejemplo la página inicio que liga a otras páginas, en esta analogia podemos ver que es similar a Android, en donde tenemos Actividas principales que se ligan a otras para al final hacer una aplicación, por ejemplo si nosotros nos vamos a contactos y elegimos a un amigo de contactos, lo podemos seleccionar y poder mandar un SMS, lo cual liga a otra actividad.
En el punto de vista de nuestro campo, podemos decir que una Actividad es iniciar con la creación de un nuevo proceso de
Linux, la asignación de memoria para los objetos de la interfaz de usuario, poniendo los objetos de diseño que hemos declarado en el XML, para crear la pantalla, por lo que este trabajo es simplemente el incio para poner a trabajr una actividad, vigilado por medio de un administrador de actividads.
El
adminsitrador de actividades del sistema, es el responsable de crear, destruir y hacer gestión a las actividades, por lo que por ejemplo, cuando el usuario inicia por primera vez una aplicación, el gestor de actividades creará su actividad y lo pondrá en la pantalla, para luego más tarde, que el usuario cambie de pantalla, el gestor de actividades moverá la actividad para ponerlo en un lugar de espera en el sistema, de esta manera, si el usuario desea volver a una actividad, se puede iniciar con mayor rapidez, por lo que al tener muchas actividades que ya no se han utilizado por cierto tiempo, hace que este administrador destruya para liberar espacio para las que están actualmente disponibles, por lo que podemos ver que Android esta mecanisado para ayudar a mejorar la velocidad de la interfaz de usuario y así mejorar la experiencia de este.
La programación para Android de manera conceptual, diferente a la programación de otros ambientes, por ejmplo en iOS, yo en lo particular, he manejado un poco los dos diferentes sistemas, mientras Android utiliza este tipo de ambiente, iOS maneja un diseño
MVC, del cual hablaré en otra entrada, en Android, por el contrario estamos respondiendo a ciertos cambios de estado en la aplicación que estemos realizando, por lo que se basa en la aplicación como applets o servlets, en donde se trata de un ciclo de actividad, no de en qué estado se encuentra esta actividad, por lo que tenemos maneras diferentes de crear aplicaciones para Android.
Este es un ejemplo de un ciclo de vida de una actividad:
Iniciando el estado. [Starting...]
Cuando en una actividad no está en la memoria, entonces es que esta en un estado de partida, esto quiere decir que si bien, está esperando a ser puesta en marcha, la actividad pasará por un conjunto de métodos, por lo que nosotros como programadores debemos de llenar para que esta actividad realice su estado de ejecución.
Hay que tener en cuenta que la transisción de un estado al otro a partir de una ejecución es una operación costora en términos de computación, por lo que esto afecta directamente con la vida de batería del dispositivo Android, esta es la razón por lo que no se destruyen automaticamente las aplicaciones cuando ya no se muestan, ya que si el usuario desea volver a utilizarla, esta ya esta en estado de esperando.
Estado de ejecución [Running...]
Cuando en una actividad, tenemos desplegado en la pantalla la aplicación en conjunto con su interacción de usuario, podemos decir que este es el estado de ejecución el cual podemos decir que todas las interacciones propuestas, como escribir, tocar un botón, ya se encuentran disponibles y están a cargo de la actividad.
La actividad de ejecución es el que tiene prioridad en la administración de actividades, por lo que debe poder conseguir más memoria y recursos que necesita para que esta funcione rápidamente, asegurandose que el sistema operativo está haciendo todo lo posible para que la aplicación sea lo más fluida posible.
Pausado
Esto es cuando una activad no esta en el enfoque del usuario, que no interactua con ella, pero es visible en la pantalla, podemos decir que está en un estado de pausa, en donde podemos decir que muchas veces este estado no llega a concretarse en una aplicación ya que si tenemos un dispositivo, regularmente se está utilizando o simplemente no, pero en algunas aplicaciones muy especificas, como en el caso de los videojuegos, podemos ver cuadros de texto que dicen que la actividad está en pausa, y que algunas veces esta a un paso de pasar al estado de ser detenido completamente.
Es importante recalcar que en este estado, aún tienen todavia alta prioridad los términos de conseguir memoria y otros recursos, como en el estado anterior, esto es porque todavia son visibles para el usuario y no se quita de la pantalla.
Detenido [Stopped...]
Cuando una actividad ya no está visible, pero aún está en la memoria, se dice que este es un estado de detención, en donde la actividad detenida podría volver a estar enfrente para convertirse en una actividad principal por el administrador de actividades, o podría ser destruido y eliminado de la memoria.
El sistema realiza esto ya que las actividades en un estado de detención puede ser probablemente que el usuario quiera verla otra ves, dentro de poco tiempo, por lo que reanudar una aplicación tendria un impacto más barato que iniciar toda la actividad a partir de cero, porque ya tenemos todos los datos y objetos que se cargan en memoria y simplemente tienen que traer todo hasta el primer plano.
Destruido [Destroyed...]
Una actividad destruida, es cuando ya no está en la memoria, entonces el administrador de actividades de android ha decidido que la actividad ya no es necesaria que esté en memoria y la ha eliminado, por lo que antes de destruir esa actividad, se pueden realizar ciertas acciones como por ejemplo, guardar cualquier información importante que no se habia guardado antes, sin embargo, no hay una garantia de que la actividad se detuvo antes de ser destruido, por lo que es mejor programar que se guarden las cosas importantes en el estado de pausa, en lugar del esta detenido.
Es importante aclarar que el hecho de que una actividad este en un estado de ejecución no quiere decir que está realizando mucho procesamiento, por lo que de la misma manera, una actividad que está en estado de detención no es necesariamente que no está haciendo nada, entonces podemos concluir que los nombres de estado, se refieren precisamente a la forma activa de la actividad respecto a la entrada de usuario.
Referencias.
Android Programming: O' Reilly
Desarrollo en Android