Pergunta

Eu tenho um midlet j2me rodando em um telefone celular. O código fina funciona, mas a questão que surge é que o programa parece estar a correr mais do que uma instância de si mesmo. Eu tenho o código no início da aplicação dentro do método Appstart () que é executado duas vezes quando o aplicativo é iniciado. Durante a vigência do programa, o código pode ser visto correndo duas vezes quando o texto está escrito na tela.

Os olhares código como 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
}

Eu não tenho idéia por que o código está sendo chamado duas vezes.

Eu estou codificação no i290.

Foi útil?

Solução

Este é definitivamente um bug JVM. startApp() deve ser chamado apenas uma vez na inicialização e não pode ser chamado novamente até pauseApp() é chamado ou você chamar notifyPaused() si mesmo.

O que eu sugiro é o seguinte código:

private boolean midletStarted = false;

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

Desta forma, você pode acompanhar as mudanças de estado de MIDlets. Mas, na verdade, é melhor que você não usar este método em tudo e utilização construtor vez.

Oh, a propósito, eu não acho que há algumas várias instâncias ou algo assim, este é apenas um erro JVM.

Outras dicas

Talvez você fez algo que fez a pauseApp() chamada tempo de execução e, em seguida, quando você definir o foco para o aplicativo o tempo de execução chamado startApp() novamente.

Coloque o registo em pauseApp() e ver o que acontece.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top