Android Actividades

6
Aplicaciones y Actividades. Las aplicaciones en Android no son iguales que las aplicaciones en los sistemas operativos tradicionales: sólo hay una en primer plano que generalmente ocupa toda la pantalla. Por defecto, cada aplicación de Android corre en su propio proceso, ejecutando una instancia independiente de la máquina virtual Dalvik. Los procesos que se ejecutan en el sistema se incluyen en una pila de procesos, así al arrancar una aplicación nueva, ésta pasa a primer plano situando el proceso que aloja la primera actividad en la cima de la pila de procesos. Una vez que se cierra la actividad que está en primer plano se recupera la siguiente actividad que hay en la pila. Internamente cada pantalla de la interfaz de usuario (UI) está representada por una clase Activity. Cada actividad tiene su propio proceso de vida. Una actividad es una o varias actividades más un proceso. Pero la cosa se complica porque una aplicación puede estar viva incluso si su proceso se ha matado. Porque el ciclo de vida de una actividad no está ligado al ciclo de vida de un proceso. Los procesos son contenedores desechables

Transcript of Android Actividades

Page 1: Android Actividades

Aplicaciones y Actividades.

Las aplicaciones en Android no son iguales que las aplicaciones en los sistemas operativos tradicionales: sólo hay una en primer plano que generalmente ocupa toda la pantalla.

Por defecto, cada aplicación de Android corre en su propio proceso, ejecutando una instancia independiente de la máquina virtual Dalvik. Los procesos que se ejecutan en el sistema se incluyen en una pila de procesos, así al arrancar una aplicación nueva, ésta pasa a primer plano situando el proceso que aloja la primera actividad en la cima de la pila de procesos. Una vez que se cierra la actividad que está en primer plano se recupera la siguiente actividad que hay en la pila.

Internamente cada pantalla de la interfaz de usuario (UI) está representada por una clase Activity. Cada actividad tiene su propio proceso de vida. Una actividad es una o varias actividades más un proceso. Pero la cosa se complica porque una aplicación puede estar viva incluso si su proceso se ha matado. Porque el ciclo de vida de una actividad no está ligado al ciclo de vida de un proceso. Los procesos son contenedores desechables

Page 2: Android Actividades

de procesos.

La aplicaciones de Android no tienen control sobre su propio ciclo de vida, por lo tanto, deben estar pendientes de cualquier cambio de estado y reaccionar como corresponda y, sobre todo, deben estar preparadas para su terminación en cualquier momento, ya que Android mata, sin previo aviso, los procesos que considera necesarios para mantener el sistema de respuesta.

En un momento dado una actividad pasa al primer plano y se coloca por encima de otra formado una pila de actividades . El botón back cierra la actividad y recupera de la pila la anterior

1. La aplicaciones en Android no tienen control de su ciclo de vida 2. Deben estar preparadas para su terminación en cualquier momento 3. Cada aplicación se ejecuta en su propio proceso 4. El runtime de Android gestiona el proceso de cada aplicación y por extensión de

cada Actividad que contenga.

Procesos y prioridades

Cuando Android necesita recursos, realiza una serie de pasos para ir liberando aquellos que no utiliza o que pueden ser liberados, según una serie de criterios de prioridades. El orden en que los procesos se van matando para liberar los recursos lo determina las prioridades de las aplicaciones que alojan.

1. Prioridad crítica 1. Procesos activos: son los procesos que interactúan con el usuario. Hay muy pocos y

se les mata sólo en último recurso. 2. Prioridad alta

1. Procesos visibles: son los procesos que están visibles pero no activos (por ejemplo, parcialmente tapados por otra actividad). Hay muy pocos y se les mata sólo en circunstancias extremas.

2. Procesos de servicios arrancados: su procesamiento debe continuar aunque no tenga interfaz visible. Se les mata sólo en circunstancias extremas.

3. Prioridad baja 1. Procesos de fondo: alojan actividades que no caen en las categorías anteriores. Hay

muchos y se les mata cuando se necesitan recursos para otros procesos. 2. Procesos vacíos: son procesos que Android mantiene en memoria, una vez han sido

terminados, por si se relanzan de nuevo. Se les mata rutinariamente.

Creando una actividad

Page 3: Android Actividades

Las actividades representan una cosa concreta que puede hacer el usuario y corresponden con una pantalla de la interfaz de usuario . Muestra los controles de la interfaz de usuario y reacciona ante las interacciones del mismo . Es una clases derivada de la clase Activity Toda actividad se declara en el archivo AndroidManifest.xml

Normalmente una aplicación consta de varias actividades

Cada pantalla se implementa como una actividad. Moverse a la siguiente actividad supone llamar al método startActivity() o startActivityForResult(). Una aplicación puede reusar actividades de android o de otras aplicaciones

Import android.app.Activity;import android.os.Bundle;

public class HelloWorld extends Activity { @Override public void onCreate(Bundle saveInstanceState) { super.onCreate(saveInstanceState); setContentView(R.layout.main); } }

Page 4: Android Actividades

onCreate: Se llama a este método cuando se crea la actividad setContentView: Asigna a la vista el contenido del recurso layout R.layout.main: Recurso de layout de la aplicación

Ciclo de vida de las actividades

Los desarrolladores no tienen control sobre el estado en el que se encuentra su programa. Es un procedimiento controlado por el sistema. Pero sí recibe notificaciones cuando el estado va a cambiar gracias a las llamadas al métodos onXX().

Cada método de ciclo de actividad de Android tiene una función concreta y se presenta en una fase determinada del ciclo de vida.

La actividad de foreground (la actividad en la parte superior de la pantalla con la que el usuario está interactuando) es considerada la más importante. Su proceso sólo será matado como último recurso, si se utiliza más memoria de la disponible en el dispositivo.

Una actividad visible (una actividad que es visible para el usuario, pero no en primer plano, como un cuadro de diálogo o una ventana flotante) se considera muy importante y no se mata a menos que se requiera para mantener la actividad de primer plano en ejecución.

Una actividad de background (una actividad que no es visible para el usuario y se ha detenido) ya no es crítica, por lo que el sistema de seguridad puede matar a su proceso para recuperar la memoria para el primer plano otros procesos visibles. Si el proceso tiene que ser matado, cuando el usuario navega de regreso a la actividad (por lo que es visible en la pantalla otra vez), su método onCreate(Bundle) será llamado con el savedInstanceState había suministrado previamente en onSaveInstanceState (bundle) de manera que puede reiniciarse en el mismo estado que el último usuario lo dejó.

Un proceso vacío es un alojamiento sin actividades u otros componentes de aplicación (como servicio o clases BroadcastReceiver). Estos son matados muy rápidamente por el sistema cuando escasea la memoria. Por esta razón, cualquier operación en segundo plano que no fuera de una actividad debe ser ejecutada en el contexto de una actividad BroadcastReceiver o servicio para garantizar que el sistema sabe que va a necesitar.

Moverse a la siguiente actividad

startActivity(intent); Lanza una nueva actividad sin recibir el resultado

startActivityForResult(intent, requestCode); Lanza una nueva actividad y

Page 5: Android Actividades

espera el resultado

Cuando retorna la actividad llamada, se invoca al método onActivityResult pasándole el requestCode con el que se lanzó desde la actividad onActivityResult(int requestCode, int resultCode, Intent result)

Estados de una actividad

Activo (Running): La actividad está encima de la pila, es

visible, tiene el foco. Pausado (Paused): La actividad es visible pero no tiene el

foco. Se alcanza este estado cuando pasa a activa otra actividad transparente o que no ocupa toda la pantalla. Cuando una Actividad es tapada por completo pasa a estar parada.

Parado (Stopped): Cuando la actividad no es visible. Se recomienda guardar el estado de la ui, preferencias, etc

Destruido (Destroyed): Cuando la Actividad termina, o es matada por el runtime de Android. Sale de la Pila de Actividades.

Métodos de transición de estados

onCreate(Bundle) : A este método se le llama cuando se inicia la actividad por primera vez. Puede utilizarse para llevar a cabo inicializaciones individuales como las que se realiza al crear la interfaz de usuario. OnCreate()toma un parámetro que puede ser null o alguna información de estado guardada previamente por el método onSaveInstanceState().

onStart() : Se invoca cuando la Actividad va a ser mostrada al usuario .

onResume() : Se llama a este método cuando la actividad va a empezar a interactuar con el usuario

onPause() : Se invoca cuando la actividad se dispone a pasar a segundo plano, normalmente porque otra actividad ha sido ejecutada en primer plano. Aquí es dónde debe guardarse el estado persistente de un programa, como en el caso de una base de datos que esté siendo editada. Si hay escasez de recursos en el sistema, este método podría no llegar a ser invocado y la actividad ser destruida directamente .

onStop() : Se invoca cuando la actividad ya no es visible por el usuario y no será necesaria duante un tiempo. Si la memoria es limitada, puede que no se llame nunca a onStop() sino que el sistema mate el proceso directamente.

onRestart() : Si se llama a este método, indica que se está volviendo a mostrar la actividad del usuario desde el estado de detenido.

Page 6: Android Actividades

onDestroy() : Se llama a este método justo antes de que la actividad sea destruida. Si la memoria es limitada puede que no se llame nunca a onDestroy() y el sistema mate directamente el proceso.

Otros métodos son

onSaveInstanceState(Bundle)onRestoreInstanceState(Bundle) onSaveInstanceState()