Está en la página 1de 9

8/17/2011

MODULO 4

Los MIDlets

4.1 Qu son los MIDlets?


Los MIDlets son aplicaciones creadas usando la especificacin MIDP. Son la plantilla de trabajo para el desarrollo de nuestras aplicaciones. Estn diseados para ser ejecutados, como ya sabemos, en dispositivos con poca capacidad grfica, de cmputo y de memoria. En estos dispositivos no disponemos de lneas de comandos donde poder ejecutar las aplicaciones que queramos, si no que reside en l un software que es el encargado de ejecutar los MIDlets y gestionar los recursos que stos ocupan.

8/17/2011

4.2 El Gestor de Aplicaciones


El gestor de aplicaciones o AMS (Application Management System) es el software encargado de gestionar los MIDlets. Este software reside en el dispositivo y es el que nos permite ejecutar, pausar o destruir nuestras aplicaciones J2ME.

El AMS realiza dos grandes funciones:


1. Por un lado gestiona el ciclo de vida de los MIDlets. 2. Por otro, es el encargado de controlar los estados por los que pasa el MIDlet mientras est en la memoria del dispositivo, es decir, en ejecucin.

4.3 Ciclo de vida de un MIDlet

8/17/2011

4.3.1 Estados de un MIDlet en fase de ejecucin


El MIDlet es cargado en la memoria del dispositivo y es aqu donde puede transitar entre 3 estados diferentes: Activo, en pausa y destruido. Cundo un MIDlet comienza su ejecucin, est en el estado Activo pero, qu ocurre si durante su ejecucin recibimos una llamada o un mensaje? El gestor de aplicaciones debe ser capaz de cambiar el estado de la aplicacin en funcin de los eventos externos al mbito de ejecucin de la aplicacin que se vayan produciendo. Una vez que terminemos de trabajar con el MIDlet y salgamos de l, ste pasara al estado de Destruido dnde sera eliminado de la memoria del dispositivo.

4.3.2 Estados de un MIDlet


Un MIDlet durante su ejecucin pasa por 3 estados diferentes, estos tres estados son: 1. Activo: El MIDlet est actualmente en ejecucin. 2. Pausa: El MIDlet no est actualmente en ejecucin. En este estado el MIDlet no debe usar ningn recurso compartido. Para volver a pasar a ejecucin tiene que cambiar su estado a Activo. 3. Destruido: El MIDlet no est en ejecucin ni puede transitar a otro estado. Adems se liberan todos los recursos ocupados por el MIDlet.

8/17/2011

4.3.2 Estados de un MIDlet

4.4 El paquete javax.microedition.midlet


El paquete javax.microedition.midlet define las aplicaciones MIDP y su comportamiento con respecto al entorno de ejecucin.

8/17/2011

4.4.1 Clase MIDlet


public abstract class MIDlet Un MIDlet es una aplicacin realizada usando el perfil MIDP . La aplicacin debe extender a esta clase para que el AMS pueda gestionar sus estados y tener acceso a sus propiedades. El MIDlet puede por s mismo realizar cambios de estado invocando a los mtodos apropiados. Los mtodos de los que dispone esta clase son los siguientes: protected MIDlet() Constructor de clase sin argumentos. Si la llamada a este constructor falla, se lanzara la excepcin SecurityException.

4.4.1 Clase MIDlet


public final int checkPermission(String permiso) Consigue el estado del permiso especificado. Este permiso est descrito en el atributo MIDlet-Permission del archivo JAD. En caso de no existir el permiso por el que se pregunta, el mtodo devolver un 0. En caso de no conocer el estado del permiso en ese momento debido a que sea necesaria alguna accin por parte del usuario, el mtodo devolver un -1. Los valores devueltos por el mtodo se corresponden con la siguiente descripcin: a) 0 si el permiso es denegado b) 1 si el permiso es permitido c) -1 si el estado es desconocido

8/17/2011

4.4.1 Clase MIDlet


protected abstract void destroyApp(boolean incondicional) throws MIDletstateChangeException Indica la terminacin del MIDlet y su paso al estado de Destruido. En el estado de Destruido el MIDlet debe liberar todos los recursos y salvar cualquier dato en el almacenamiento persistente que deba ser guardado. Este mtodo puede ser llamado desde los estados Pausa o Activo. Si el parmetro incondicional es false, el MIDlet puede lanzar la excepcin MIDletstateChangeException para indicar que no puede ser destruido en este momento. Si es true, el MIDlet asume su estado independientemente de como finalice el mtodo. de destruido

4.4.1 Clase MIDlet


public final String getAppProperty(String key) Este mtodo proporciona al MIDlet un mecanismo que le permite recuperar el valor de las propiedades desde el AMS. Las propiedades se consiguen por medio de los archivos manifest y JAD. El nombre de la propiedad a recuperar debe ir indicado en el parmetro key. El mtodo nos devuelve un String con el valor de la propiedad o null si no existe ningn valor asociado al parmetro key. Si key es null se lanzar la excepcin NullPointerException. public final void notifyDestroyed() Este mtodo es utilizado por un MIDlet para indicar al AMS que ha entrado en el estado de Destruido. En este caso, todos los recursos ocupados por el MIDlet deben ser liberados por ste de la misma forma que si se hubiera llamado al mtodo MIDlet.destroyApp(). El AMS considerar que todos los recursos que ocupaba el MIDlet estn libres para su uso.

8/17/2011

4.4.1 Clase MIDlet


public final void notifyPaused() Se notifica al AMS que el MIDlet no quiere estar Activo y que ha entrado en el estado de Pausa. Este mtodo slo debe ser invocado cundo el MIDlet est en el estado Activo. Una vez invocado este mtodo, el MIDlet puede volver al estado Activo llamando al mtodo MIDlet.startApp(), o ser destruido llamando al mtodo MIDlet.destroyApp(). Si la aplicacin es pausada por s misma, es necesario llamar al mtodo MIDlet.resumeRequest() para volver al estado Activo. protected abstract void pauseApp() Indica al MIDlet que entre en el estado de Pausa. Este mtodo slo debe ser llamado cundo el MIDlet est en estado Activo. Si ocurre una excepcin RuntimeException durante la llamada a MIDlet.pauseApp(), el MIDlet ser destruido.

4.4.1 Clase MIDlet


public final boolean platformRequest(String url) Establece una conexin entre el MIDlet y la direccin URL. Dependiendo del contenido de la URL, nuestro dispositivo ejecutar una determinada aplicacin que sea capaz de leer el contenido y dejar al usuario que interacte con l. Si, por ejemplo, la URL hace referencia a un archivo JAD o JAR, nuestro dispositivo entender que se desea instalar la aplicacin asociada a este archivo y comenzar el proceso de descarga. Si, por el contrario, la URL tiene el formato tel:<nmero>, nuestro dispositivo entender que se desea realizar una llamada telefnica. public final void resumeRequest() Este mtodo proporciona un mecanismo a los MIDlets mediante el cual pueden indicar al AMS su inters en pasar al estado de Activo. El AMS, en consecuencia, es el encargado de determinar qu aplicaciones han de pasar a este estado llamando al mtodo MIDlet.startApp().

8/17/2011

4.4.1 Clase MIDlet


protected abstract void startApp() throws MIDletstateChangeException Este mtodo indica al MIDlet que ha entrado en el estado Activo. Este mtodo slo puede ser invocado cundo el MIDlet est en el estado de Pausa. En el caso de que el MIDlet no pueda pasar al estado Activo en este momento pero si pueda hacerlo en un momento posterior, se lanzara la excepcin MIDletstateChangeException. A travs de los mtodos anteriores se establece una comunicacin entre el AMS y el MIDlet. Por un lado tenemos que los mtodos startApp(), pauseApp() y destroyApp() los utiliza el AMS para comunicarse con el MIDlet, mientras que los mtodos resumeRequest(), notifyPaused() y notifyDestroyed() los utiliza el MIDlet para comunicarse con el AMS.

4.5 Estructura de los MIDlets


import javax.microedition.midlet.* public class MiMidlet extends MIDlet { public MiMidlet() { /* ste es el constructor de clase. Aqu debemos inicializar nuestras variables. */ } el MIDlet ejecute cundo entre en el estado de pausa (Opcional) */ }

public destroyApp(){ /* Aqu incluiremos el cdigo que queremos que el MIDlet ejecute cundo sea destruido. Normalmente aqu se liberaran los recursos ocupados por el MIDlet como memoria, etc. (Opcional) public startApp(){ */ /* Aqu incluiremos el cdigo que queremos que } el MIDlet ejecute cundo se active. */ } } public pauseApp(){ /* Aqu incluiremos el cdigo que queremos que

8/17/2011

4.6 Ejemplo prctico


import javax.microedition.midlet.*; import javax.microedition.lcdui.*; public class HolaMundo extends MIDlet{ private Display pantalla; private Form formulario = null; public HolaMundo() { pantalla = Display.getDisplay(this); formulario = new Form(Hola Mundo); } public void startApp() { pantalla.setCurrent(formulario); } public void pauseApp() { } public void destroyApp(boolean unconditional) { pantalla = null; formulario = null; notifyDestroyed(); }

También podría gustarte