Desarrollo Android: ¿Cómo Usar el Ciclo de Vida de los Activities?

Desarrollo Android: ¿Cómo Usar el Ciclo de Vida de los Activities?

En el artículo anterior escribí sobre algunas de las consecuencias de no prestar suficiente atención al ciclo de vida de los Activities, incluso enuncié algunas prácticas que en principio parecen soluciones pero que en verdad no lo son, sin embargo, quedé en deuda, al no ofrecer ninguna solución verdadera, ni profundizar en definir lo que es en ciclo de vida, hoy espero saldar esa deuda, al menos en parte.

El ciclo de vida de una ventana en un entorno de escritorio es bastante sencillo, la ventana se crea y permanece allí, con todas sus variables, estado y demás, hasta que el usuario o nosotros la cerremos, o hasta que se cierre la aplicación que la inició, no importa si el programa se minimiza, o si el equipo se suspende, o incluso si hiberna, la ventana seguirá ahí.

En Android, de cara al usuario, aparéntemente sucede algo muy parecido, sin embargo tras bambalinas pasa algo muy diferente. El Activity, que en Android es lo más cercano a una ventana, se crea y de ahí en adelante el sistema operativo puede removerlo totalmente de memoria y restaurarlo las veces que sea necesario, hasta que finalmente se cierre por el usuario o por nosotros, todo esto porque Android está hecho para funcionar con recursos muy limitados, entre ellos, la memoria.

Puede haber pérdidas de información si estas remociones y restauraciones no se manejan apropiadamente.

Debemos diferenciar entre dos tipos de información, la transitoria y la permanente, en general la información transitoria hace referencia al estado de la interfaz de usuario, por ejemplo, los ítems de una lista, o el índice del elemento que el usuario está viendo actualmente. La información permanente es la que se debe guardar en una base de datos, por ejemplo, los cambios que hizo el usuario en algún registro.

El manejo para ambos casos se logra sobrescribiendo algunos métodos del Activity:

  • void onPause () se llama cuando se está a punto de dejar la actividad, si hay algún dato permanente que deba guardarse, debe hacerse en este momento.
  • void onSaveInstanceState (Bundle outState), en el Bundle, o paquete, que nos entrega guardaremos cualquier información transitoria que Android no guarde de forma automática, por ejemplo, variables declaradas en el Activity, Scrolling o desplazamientos, etc.El Bundle tiene métodos para almacenar los tipos de datos básicos de forma directa, si queremos almacenar Objetos más complejos o desarrollados por nosotros mismos estos deberán implementar la interfaz Parcelable.
  • void onCreate (Bundle savedInstanceState), lo más seguro es que ya lo hayas sobrescrito, ya que ahí se inicializan los principales componentes del Activity, sin embargo hay que prestar atención al Bundle que te entrega, la primera vez será nulo, sin embargo, si se está restaurando el Activity, el Bundle ya no será nulo y tendrá cualquier información que hayas guardado en él dentro del onSaveInstanceState y deberás leerla.

Una forma sencilla de ver los efectos del ciclo de vida en nuestro Activity es rotar la pantalla, en este caso Android sacará el Activity de memoria y luego restaurará su estado, así sabremos que no hay ninguna pérdida de información.

El estudio del ciclo de vida es una de las primeras diferencias que saltan a la vista cuando se empieza a estudiar el desarrollo de este maravilloso sistema, y su uso correcto nos llevará al desarrollo de aplicaciones robustas y sin problemas. Si te gustó el artículo no olvides compartirlo en tus redes sociales y suscribirte, comenta si tienes alguna adición y quieres que amplíe cualquier concepto.

Deja un Comentario

CAPTCHA code
X