Midlet

Solo disponible en BuenasTareas
  • Páginas : 11 (2654 palabras )
  • Descarga(s) : 0
  • Publicado : 27 de noviembre de 2010
Leer documento completo
Vista previa del texto
Ejemplo de MIDlet ejecutando acciones mientras pausado

El código que sigue es de un MIDlet que se pausa automáticamente al ser iniciado y que mantiene un proceso activo mientras la aplicación está pausada. Esto permite ver dos cosas:

1. cómo hacer que una aplicación se pause por sí sola
2. cómo hacer que una aplicación que esté en pausa continúe ejecutando alguna operación deseadaPara ver la aplicación en un equipo físico, basta conectarse al equipo con un cable de datos e iniciar una sesión de depuración como se describe en la página 30 de la guia de desarrolladores Java ME iDEN

/******************************************************
 *
 * Ejemplo de MIDlet que demuestra cómo hacer que una
 * aplicación se pause sola y que continúe ejecutando un
 * procesomientras está en pausa
 *
 * Escrito por NII Holdings para propósitos educacionales.
 * Se permite su uso libre.
 *
 ******************************************************/
import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;

/**
 *  SimpleBGMidlet
 */
public class SimpleBGMidlet extends MIDlet implements CommandListener {

/* Contador que sólo es necesario para mostrarun proceso que
está trabajando mientras la aplicación está en pausa.
El contador se incrementa por uno cada segundo mientras ejecuta la aplicación*/

private int count = 1;

//  User Interface related
private Command exitCmd  = new Command( "Exit",Command.EXIT, 2 );
protected Display display;

private Form form;

//SimpleBGProc es una clase interna que se define más abajo
privateSimpleBGProc bg = new SimpleBGProc();
//el hilo que va a ejecutar el proceso de SimpleBGProc
private Thread thread;

/** Constructor */
public SimpleBGMidlet() {
}

/**
 *  Estado inicial.
 *  @throw MIDletStateChangeException para indicar que ocurrió un error en el
 *  cambio de estado
 */
public void startApp() throws MIDletStateChangeException {
    System.out.println("LlamadostartApp");
    try {
        if (display == null) {
           System.out.println("Configurando...");
           display = Display.getDisplay(this);
           display.setCurrent(form);
        }
    }
    catch(Exception e) {
        System.out.println("Excepción durante startApp()");
        e.printStackTrace();
        //  If some kind of transient error ocurrs, throw a
        // MIDledStateChangeException.
        throw new MIDletStateChangeException("Error iniciando...");
    }
    System.out.println("Comenzando pausa en seguida...");

    // el comando que sigue le indica al sistema Java del equipo que
    // debe pausar esta aplicación cuando pueda. El método pauseApp()
    // será llamado a su momento por el sistema.
    pauseApp();
    notifyPaused();
}

/**Estado de pausa. Es aquí donde debemos iniciar el thread que queremos que ejecute sólo en el fondo . */
public void pauseApp() {
        System.out.println("pauseApp llamado");
    thread = new Thread(bg);
    thread.start();
        display = null;
}

/**
 *  Destroyed state. Soltar todos los recursos en us (connection, threads, etc).
 *  Última oportunidad de guardar datos.
 * @param uc Si verdadero, el MIDlet debe soltar todos los recursos que esté usando.
 *  Si falso, el MIDlet puede lanzar @throw MIDletStateChangeException para indicar
 *      que no quiere ser destruido en este momento.
 */
public void destroyApp(boolean uc)  {
        System.out.println("destroyApp llamado");
        bg.stopAll();
    display = null;
}

/**
 *  Respuesta a comandos
 * @param c el comando LCDUI para procesar.
 *  @param d el Displayable que originó el comando.
 */
public void commandAction(Command c, Displayable d) {
    if (c == exitCmd) {
      destroyApp(false);
      notifyDestroyed();
    }
} // commandAction()

/* Clase sencilla que instancia un thread que, cada segundo, incrementa un contador
* y envía texto a la consola.
*/

private class...
tracking img