ClubEnsayos.com - Ensayos de Calidad, Tareas y Monografias
Buscar

Programación multimedia y dispositivos móviles


Enviado por   •  25 de Febrero de 2013  •  4.142 Palabras (17 Páginas)  •  512 Visitas

Página 1 de 17

Programación multimedia y dispositivos móviles

4.6.Programar con varias Activities

Una aplicación generalmente usa y tiene varias activities. Una Activity principal “main”, es aquella que se muestra cuando el usuario ejecuta la aplicación. Luego esta Activity puede lanzar otra Activity, esta otra y así sucesivamente. Cada vez que un nueva activitiy se inicia, la Activity previa es parada (onStop), pero el sistema mantiene la Activity en una pila de activities. Cuando una nueva Activity se inicia se coloca en la cima de la pila y toma el foco del usuario. Dado que es una pila, cuando el usuario pulsa el botón “Atrás” del dispositivo, la Activity es eliminada de la pila y destruida (onDestroy), así, la Activity anterior guardada en la pila toma el foco de nuevo (onResume). Todos estos cambios de estado de la Activity es lo que se denomina ciclo de vida de una Activity y por cada estado existe un evento asociado donde podemos programar acciones. Por ejemplo ,en onStop la Activity debería liberar de memoria objetos de gran tamaño y conexiones de red o bases de datos, o por ejemplo en onResume podría readquirir los recursos necesarios para continuar con las tareas interrumpidas.

4.6.1. Ciclo de vida de una Activity. onCreate  No visible

El sistema llama a este método cuando crea la Activity. Aquí se deben realizar tareas de inicialización de controles y llamar a setContentView para mostrar un layout.

onStart  No visible La Activity está apunto de ser visible.

onResume  Visible La Activity se visualiza, recibe el foco y se ejecuta. Se suelen readquirir recursos para

continuar con las tareas interrumpidas. onPause  Puede estar parcialmente visible

Otra actividad va a recibir el foco, la actual se mantiene pone en pausa y podría no pararse(onStop), siempre que sea todavía visible (ej. ventana de diálogo que no cubre toda la pantalla). Es el primer estado en donde la Activity puede llegar a ser destruida por el sistema en casos de extrema necesidad de memoria, es por ello que aquí deberíamos salvar los cambios persistentes (entre distintas ejecuciones de la aplicación). Además, los eventos siguientes a onPause: OnStop y OnDestroy, podrían no ser llamados por el sistema cuando este elimina la Activity en caso de emergencia de memoria, por lo que el evento más seguro para almacenar datos persistentes es este: onPause.

También se suele usar para animaciones y otras tareas que consuman CPU en este evento. Nota: Las tareas en este evento no deben consumir muchos recursos del sistema, dado que

este es un evento que se ejecuta con mucha frecuencia y puede ralentizar mucho la aplicación y el dispositivo.

onStop  No visible La Activity ha quedado oculta por otra (o está siendo destruida), y ya no tiene el foco. En

necesidad de memoria podría ser eliminada por el sistema Android. Si vuelve a recibir el foco se ejecuta el evento onRestart().

onDestroy  No visible Útil para liberar recursos o finalizar threads en segundo plano. La Activity se elimina

definitivamente la Activity de memoria.

52

Programación multimedia y dispositivos móviles

Mediante programación se puede cerrar una Activity con el método finish(). O puede ser destruida por el sistema, en cualquiera de estos casos la Activity debe será creada de nuevo. Podemos distinguir ambas situaciones en este evento con el método isFinishing().

53

Programación multimedia y dispositivos móviles

A continuación se muestra el código de los eventos sobrescritos en una Activity:

public class MainActivity extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // La Activity está siendo creada } @Override protected void onStart() { super.onStart(); // La Activity está apunto de ser visible } @Override protected void onResume() { super.onResume(); // La Activity ya es visible } @Override protected void onPause() { super.onPause(); // Otra Activity ha tomado el foco } @Override protected void onStop() { super.onStop(); // La Activity ya no es visible } @Override protected void onStart() { super.onStart(); // La Activity pasa de Stop a Start } @Override protected void onDestroy() { super.onDestroy(); // La Activity se destruye } }

54

Programación multimedia y dispositivos móviles

EJERCICIO: Crea una Activity como la anterior que sobrescriba todos los métodos de evento asociados con los posibles estados de una Activity y comprueba que los estados por los que pasa la Activity corresponden con el gráfico del ciclo de vida de una activity.

En cada evento muestro un mensaje de información en el Log (sistema de mensajes de depuración) para indicar el evento que se ejecuta la Activity. Para ello, haz una llamada al método estático i de la clase Log, por ejemplo:

Log.i("Evento ejecutado:","Estado onCreate");

Los dos parámetros que recibe son el TAG (una etiqueta para identificar mensajes relacionados) y el String con el mensaje de depuración.

1. Ejecuta la aplicación. 2. ¿Qué eventos se han ejecutado tras lanzar la aplicación la primera vez?. Puedes buscar

estos mensajes en la pestaña LogCat de Eclipse.

3. Borra el Log

4. Realiza una pulsación corta en el botón “Home” del dispositivo. ¿Qué eventos se han ejecutado ahora?

5. Borra el Log 6. Realiza una pulsación larga en el botón “Home” y vuelve a mostrar la Activity. ¿Qué

eventos se han ejecutado ahora?

4.6.2. Salvar el estado de una actividad El estado de una Activity se refiere a los valores actuales de la Activity contenidos en los

controles y en otras variables que hemos creado en la Activity las cuales son importantes para definir el estado de la Activity.

Mantener el estado anterior de un Activity demuestra que la aplicación desarrollada es profesional y ayuda al usuario en procesos repetitivos.

Cuando una Activity pasa por los estados pause y stop, los datos de la Activity todavía permanecen en memoria pues esta todavía no se han destruido, por lo tanto cuando la Activity vuelve a mostrarse y tomar el foco se mostrará tal y como estaba. Sin embargo, si la Activity se destruye por código o con el botón atrás del dispositivo, el estado de la Activity se perderá, siendo este el comportamiento deseado, en estos casos si queremos salvar algún dato persistente entre distintas ejecuciones de la Activity(como un dibujo

...

Descargar como (para miembros actualizados) txt (24 Kb)
Leer 16 páginas más »
Disponible sólo en Clubensayos.com