Pregunta

Tengo un j2me midlet que se ejecuta en un teléfono celular.El código funciona bien, pero el problema que surge es que parece que el programa se ejecuta más de una instancia de sí mismo.Tengo el código en el inicio de la aplicación dentro de la appStart() método que se ejecuta dos veces cuando se inicia la aplicación.Durante la vida del programa, el código puede ser visto correr dos veces cuando el texto está escrito en la pantalla.

El código es este:

public MyClass()
{
    form = new Form("MyProgram");
    cmdClose = new Command("EXIT", Command.EXIT, 1);

    form.addCommand(cmdClose);
    form.setCommandListener(this);

    display = Display.getDisplay(this);
    display.setCurrent(form);
}

public void startApp()
{
    form.append("App starting\n");
    // Rest of program
}

No tengo idea de por qué el código está siendo llamado dos veces.

Estoy de codificación en el i290.

¿Fue útil?

Solución

Esto definitivamente es un error de JVM. Se debe llamar a startApp() solo una vez al inicio y no se puede volver a llamar hasta que se llame a pauseApp() o se llame a notifyPaused() usted mismo.

Lo que sugiero es el siguiente código:

private boolean midletStarted = false;

public void startApp() {
    if (!midletStarted) {
        midletStarted = true;
        //Your code
    }
}

De esta manera puede realizar un seguimiento de los cambios de estado de midlet. Pero, de hecho, es mejor que no utilice este método en absoluto y utilice el constructor en su lugar.

Ah, por cierto, no creo que haya algunas instancias múltiples o algo así, esto es simplemente un error de JVM.

Otros consejos

Tal vez usted hizo algo que hizo la llamada en tiempo de ejecución pauseApp() y luego, cuando se establece el foco en la aplicación de la llamada en tiempo de ejecución startApp() de nuevo.

Poner el registro en pauseApp() y a ver qué pasa.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top