Midlet: Ciclo de vida
Enviado por alfredopaul25 • 14 de Septiembre de 2012 • Ensayo • 1.491 Palabras (6 Páginas) • 519 Visitas
Midlet: Ciclo de vida
En la introducción dijimos que un midlet siempre heredará de la clase javax.microedition.midlet.MIDlet. Los métodos de esta clase permiten a nuestra aplicación crear, empezar, parar y destruir un Midlet, estos métodos son la interfaz del Midlet, que va a permitir a nuestro dispositivo poder manejar múltiples Midlets, sin tener que estar todos ejecutándose en el mismo entorno. El sistema de nuestro dispositivo puede seleccionar que Midlet está activo usando los métodos correspondientes para empezar o pausar.
El ciclo de vida de un midlet se compone de lo siguientes estados: Pausado, Activo o Destruido. Sólo puede estar en un estado a la vez. La figura 1 muestra como se pasa de uno a otro:
Figura 1. Ciclo de vida de un Midlet.
Cuando un midlet ser carga en memoria, inicialmente pasa al estado Pausado, entonces se realiza la inicialización de la clase (método startApp(), que luego veremos). Si el Midlet lanza una excepción durante la ejecución de su constructor, se destruye. El midlet puede pasar de Activo a Pausado, cuando, por ejemplo, recibimos una llamada en nuestro móvil; es el sistema quien pasa nuestro Midlet de Activo a Pausado y viceversa. Un Midlet puede ser lanzado y parado todas las veces que queramos, pero sólo puede ser destruido una vez.
2.- Empaquetamiento de los Midlet
Los Midlet necesitan ser empaquetados antes de ser instalado en el dispositivo de destino. Se utilizará un fichero .JAR(Java ARchive) donde se tendrá el Midlet principal y todas aquellas clases, imágenes u otros ficheros que nos puedan ser necesarios en tiempo de ejecución. También se incluirá en el .JAR información (en el fichero manifest) que le explique al dispositivo el contenido del fichero .JAR. Esta misma información también se incluye en el fichero .JAD (Java Application Descriptor).
Las clases del Midlet que son empaquetadas en el .JAR, deben estar compiladas en .class (obviamente) y verificadas antes de su utilización en un dispositivo, para verificar que no realizan ninguna operación no permitida. De hecho, las únicas operaciones 'no permitidas' que permite el API de MIDP es el método exit() de las clases System o Runtime, y como vimos requieren usar la excepción SecurityException para poder ser utilizado. Esta verificación se debe a hacer, debido a las limitaciones de los dispositivos, donde añadir esta parte de seguridad en la máquina virtual sería muy costoso en memoria. Es por ello, que los usuarios de estos dispositivos tiene que tener mucho cuidado con los .JAR que instalan, ya que si es de una fuente no fiable, podría contener código malicioso no verificado y que escapase al control de la máquina virtual.
Un fichero .jar puede contener varios Midlets, a esto se le denomina Midlet suite y permite compartir recursos, lo cual es aconsejable para minimizar el uso de los recursos del dispositivo y para una mayor reutilización de los componentes.
2.- Tratamiento de ciclos de vida de la clase MIDlet javax.microedition.midlet.MIDlet
Como hemos visto un Midlet siempre tiene que extender la clase javax.microedition.midlet.MIDlet que contiene todos los métodos necesarios para controlar el ciclo de vida del midlet (visto en la Figura 1).
Un Midlet debe tener un constructor público por defecto, es decir, un constructor sin argumentos. Este constructor lo puede implementar el programador si le hace falta inicializar algunos atributos del Midlet o lo puede añadir el compilador Java si no encuentra ninguno.
Para introducir los métodos del Midlet veamos el esquema que sigue todo Midlet:
Esqueleto de un Midlet:
//Usamos la clase MIDlet
import javax.microedition.midlet.*;
//Nuestra clase debe de heredar de la clase MIDlet
public class Ejemplo1 extends MIDlet {
//Constructor, si no lo ponemos (está vacío) ya lo hará Java por nosotros
public Ejemplo1( ) {
}
//Método que se llama cuando pasamos de Pausado a Activo
protected void startApp( ) {
}
//Método que se llama cuando pasamos de Activo a Pausado
protected void pauseApp( ) {
}
//Método que se llama cuando se destruye el midlet
protected void destroyApp(boolean incondicional) {
}
}
El Midlet empieza en estado Pausado, se carga en memoria, se ejecuta el constructor y si no ha habido ningún problema en el constructor pasa a estado activo por lo
...