Estou desenvolvendo uma aplicação em J2ME que por enquanto executa perfeitamente, desde de que seja a primeira vez que é Launch no emulador.
Se por algum motivo (clicar Exit por exemplo em uma de minhas Forms) a aplicação executar um notifyDestroyed e voltar a tela inicial do emulador e eu tentar executar de novo a aplicação, acontece um NullPointerException.
Minha dúvida é… o que acontece da segunda vez?
Quando acontece um notifyDestroyed a minha aplicação não “morre” no emulador?
E quando eu executo um Launch não há uma recriação de toda minha aplicação?
Já procurei em vários artigos sobre o ciclo de vida de MIDlet mas nao achei resposta para meu problema!
[quote=maruero]Estou desenvolvendo uma aplicação em J2ME que por enquanto executa perfeitamente, desde de que seja a primeira vez que é Launch no emulador.
Se por algum motivo (clicar Exit por exemplo em uma de minhas Forms) a aplicação executar um notifyDestroyed e voltar a tela inicial do emulador e eu tentar executar de novo a aplicação, acontece um NullPointerException.
Minha dúvida é… o que acontece da segunda vez?
Quando acontece um notifyDestroyed a minha aplicação não “morre” no emulador?
E quando eu executo um Launch não há uma recriação de toda minha aplicação?
Já procurei em vários artigos sobre o ciclo de vida de MIDlet mas nao achei resposta para meu problema!
Não posto o código pois ele é muito grande.
Desde já agradeço![/quote]
Na verdade o notifyDestroyed() remove a sua aplicação da memória, e o único jeito de reiniciá-la é com uma nova instância (new SuaClasse() [extends MIDlet])… entendeu?
[quote=maruero]Estou desenvolvendo uma aplicação em J2ME que por enquanto executa perfeitamente, desde de que seja a primeira vez que é Launch no emulador.
Se por algum motivo (clicar Exit por exemplo em uma de minhas Forms) a aplicação executar um notifyDestroyed e voltar a tela inicial do emulador e eu tentar executar de novo a aplicação, acontece um NullPointerException.
Minha dúvida é… o que acontece da segunda vez?
Quando acontece um notifyDestroyed a minha aplicação não “morre” no emulador?
[/quote]
Morre sim
Com certeza !
E eu acho q o problema está na lógica no início do ciclo de vida da tua aplicação.É algo nela que está gerando a exception, não o WTK…
Boone eu tbm acho que deveria ser minha lógica de inicialização, porém a minha aplicação nunca apresentou o mesmo erro na primeira inicialização, portanto deve haver alguma diferença na re-inicialização para que esse problema ocorra!
ok Fox McCloud, mas o comando “launch” do emulador nao instancia minha aplicação de novo?
É o que eu espero que ele faça! Mas não está parecendo que está instanciando necessáriamente da mesma forma!
[quote=maruero]Boone eu tbm acho que deveria ser minha lógica de inicialização, porém a minha aplicação nunca apresentou o mesmo erro na primeira inicialização, portanto deve haver alguma diferença na re-inicialização para que esse problema ocorra!
ok Fox McCloud, mas o comando “launch” do emulador nao instancia minha aplicação de novo?
É o que eu espero que ele faça! Mas não está parecendo que está instanciando necessáriamente da mesma forma![/quote]
Dê uma olhada no código desse MIDlet de um jogo que eu fiz, pode ajudar a esclarecer alguma coisa…
}[/code]
Não se preocupe com as Threads. Veja que quando eu chamo destroyApp(true), ou seja, restart = true, eu destruo a Thread do jogo e chamo startApp() novamente, reiniciando o programa, sem invocar notifyDestroyed(), então eu não mato a aplicação. Eu só invoco o notifyDestroyed() quando restart = false, que indica que a aplicação vai realmente fechar, sair da memória.