You are on page 1of 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
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


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);
}
}
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


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.
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()

You might also like