"Destruindo" uma aplicação  XML
Índice dos Fóruns » Google Android e Java Micro Edition (ME)
Autor Mensagem
Jedi_FeniX
Virtual Machine Man
[Avatar]

Membro desde: 26/04/2007 14:32:30
Mensagens: 586
Offline

Sempre que uma aplicação é fechada o método destroyApp é chamado?

www.bau-de-dev.com
boone
JWizard
[Avatar]

Membro desde: 21/09/2003 16:01:35
Mensagens: 2140
Offline

Jedi_FeniX wrote:Sempre que uma aplicação é fechada o método destroyApp é chamado?


Se a aplicação é fechada pelo AMS sim, pois o AMS é que chama destroyApp, nunca a midlet (embora tenha gente que faça esta "caca").
Se a aplicação é fechada pelo programador, destroyApp não é chamada, pois o programador fechou ela através de notifyDestroyed.

Jedi_FeniX
Virtual Machine Man
[Avatar]

Membro desde: 26/04/2007 14:32:30
Mensagens: 586
Offline

E tem como "forçar" o AMS chamar o método destroyApp, quando o programador chama notifyDestroyed?

www.bau-de-dev.com
boone
JWizard
[Avatar]

Membro desde: 21/09/2003 16:01:35
Mensagens: 2140
Offline

Jedi_FeniX wrote:E tem como "forçar" o AMS chamar o método destroyApp, quando o programador chama notifyDestroyed?


Como eu te disse, o programador nunca deveria chamar este método, pois quem chama é o AMS (Application Management System) do celular, portanto, não é tarefa do programador, mas sim do sistema chamar este método.

Não faz sentido você querer que o ele seja executado.

Suspeito que você colocou código em destroyApp que quer que seja executado quando a midlet encerrar.
Se for isto, coloque em uma método e coloque uma chamada dele antes de notifyDestroyed e dentro de destroyApp. Pronto, em ambas as situações de termino da aplicação, o código vai ser executado.

Se não for isto, clareie para mim porquê você está insistindo em querer chamar este método ?
Jedi_FeniX
Virtual Machine Man
[Avatar]

Membro desde: 26/04/2007 14:32:30
Mensagens: 586
Offline

O problema é que eu não fiz a aplicação que está chamando o método notifyDestroyed.
As poucas aplicações que eu fiz eu coloco tudo dentro de destroyApp e ai chamo este método para fechar a aplicação.
E esta outra aplicação chama em determinado momento do código o método notifyDestroyed e o pior disso é que não tenho o source do aplicativo.
Para adaptar a aplicação "velha" eu estava fazendo injections no código, mas ai cai neste problema na hora de fechar o aplicativo.

www.bau-de-dev.com
boone
JWizard
[Avatar]

Membro desde: 21/09/2003 16:01:35
Mensagens: 2140
Offline

Jedi_FeniX wrote:...As poucas aplicações que eu fiz eu coloco tudo dentro de destroyApp e ai chamo este método para fechar a aplicação.

[FEDÔ=ON]Caca detected ! [/FEDÔ]

Como eu disse, vc não deveria estar chamando destroyApp, pois este método não é seu, é do AMS...a única forma de um programa fechar a aplicação é usar notifyDestroyed. Não há outra. A chamada direta a destroyApp, não tem nenhum efeito além de ser tratada como uma chamada comum, e não pode (deve) ser feita pelo programador, somente pelo AMS. Espero que suas novas aplicações sejam feitas do modo certo a partir de agora que ficou bem claro como funciona o esquema de termino da aplicacao.

Muita gente tropeça também com o método startApp, colocando ali código de inicialização e não testando para ver se a aplicação já estava rodando anteriormente.O resultando é novos objetos sendo instanciados a toa...
Jedi_FeniX
Virtual Machine Man
[Avatar]

Membro desde: 26/04/2007 14:32:30
Mensagens: 586
Offline

hehehhehe
Também faço isso do método startApp. Mas foi porque eu vi isso em uma apostila na internet.
Então, não tem como ver a hora que o programa é fechado?

www.bau-de-dev.com
Jedi_FeniX
Virtual Machine Man
[Avatar]

Membro desde: 26/04/2007 14:32:30
Mensagens: 586
Offline

Estava tentando tirar esta dúvida sobre como fechar a aplicação, porque tenho que desenvolver uma aplicação deste tipo.
Pegar jars, que são aplicações prontoas e incluir uma tela antes da aplicação inicializar e incluir outra tela quando a aplicação fechar. E claro, tenho autorização para fazer isso com os jars.
A tela que entra antes da aplicação foi tranquilo, só herdei a MIDlet do jar e refiz a inicialização. O problema foi na hora de fechar, porque tem gente que fecha o aplicativo pelo método notifyDestroyed e outros pelo método destroyApp.
Quando eles fecham pelo método destroyApp eu posso seguir o mesmo raciocínio que o método startApp, mas se for pelo método notifyDestroyed não tem como.
Alguém teria alguma idéia para ajudar?

www.bau-de-dev.com
boone
JWizard
[Avatar]

Membro desde: 21/09/2003 16:01:35
Mensagens: 2140
Offline

Jedi_FeniX wrote:
Quando eles fecham pelo método destroyApp eu posso seguir o mesmo raciocínio que o método startApp, mas se for pelo método notifyDestroyed não tem como.
Alguém teria alguma idéia para ajudar?


Cara, pelo amor de D...eu já te dei a sua resposta...aff!!!

Antes do notifyDestroyed coloca uma chamada a mesma rotina que é chamada em destroyApp. Não tem erro...

Vou desenhar:



Difícel né ?
Jedi_FeniX
Virtual Machine Man
[Avatar]

Membro desde: 26/04/2007 14:32:30
Mensagens: 586
Offline

Essa sua solução ajudou. O problema que eu não tenho os códigos do jars. O que eu pude fazer com a sua solução foi fazer injections nos .class do jar.
Sendo que tem jar que tem classes assim:

a.class


E desta maneira não tem como fazer as injections e não tem como criar uma aplicação que faça essas injections automaticamente.

www.bau-de-dev.com
 
Índice dos Fóruns » Google Android e Java Micro Edition (ME)
Ir para:   
Powered by JForum 2.1.8 © JForum Team