Tem como eu capturar o evento do botão END???
Eu tenho em minha aplicação o comando Sair que é um Command.EXIT e que ao ser acionado envia uma menssagem ao servidor e fecha a aplicação… mas qaundo o usuário clica no botão END(Botão vermelhão) a aplicação fecha direto sem enviar a menssagem ao servidor.
posta o código ai, fica mais fácil de entender…
Criando o botão Sair:
cmSair = new Command("Sair", Command.EXIT, 0);
Código que trata o evento:
public void commandAction(Command c, Displayable disp) {
if (disp == form) {
if (c == cmSair) {
com.desconectar();
System.exit(0);
}
}
O que eu preciso é capturar e tratar o evento do botão END do celular… aquele botao vermelho que usamos par desligar o celular ou fechar uma aplicação mais rapidamente.
Nem precisa postar o código não.
Isto é normal dos celulares. O botão END é uma forma abrupta de sair de qualquer aplicação Java.
Funciona em várias marcas e modelos e NÃO HÁ como capturar sua teclada, ou seja, se o usuário clicar 1 vez ou manter apertado, a aplicação será terminada sem dó.
Huahuahua siniiiissstro… valeu, muito obrigado.
[quote]Tem como eu capturar o evento do botão END???
Eu tenho em minha aplicação o comando Sair que é um Command.EXIT e que ao ser acionado envia uma menssagem ao servidor e fecha a aplicação… mas qaundo o usuário clica no botão END(Botão vermelhão) a aplicação fecha direto sem enviar a menssagem ao servidor.[/quote]
Ter tem mas se você quer executar um código quando a aplicação for encerrada use o notificador de ciclo de vida do midlet.
Em celulares multi-task o END não encerra, apenas suspende.
Outra coisa, não use System.exit() !!
[quote=cmoscoso]
Em celulares multi-task o END não encerra, apenas suspende.[/quote]
Vários Nokias usam Symbian e nem por isto o END suspende.
Decidi fazer um teste prático em um Nokia com Symbian 9.2.
Entrei em uma determinada tela da aplicação e apertei o END.
O S.O. me jogou de volta para a tela inicial do aparelho.
Entrei de novo no menu Aplicativos e cliquei no ícone da aplicação e ele não me trouxe a aplicação aberta, mas sim executou ela novamente do zero. Isto mostra que não existia instância anterior, portanto o END encerrou a app mesmo.
Na especificação diz que uma aplicação pode requerer ficar em background se passar null para setCurrent, mas vai depender do AMS implementar isto ou não.
[quote=cmoscoso]
Outra coisa, não use System.exit() !![/quote]
OK!!! Parei de usar.
Realmente a aplicação é encerrada de vez… se não tem como capturar e tratar este comando então é meos código à implementar :).
O END sempre retorna para a tela inicial por questão de usabilidade, mas não espere que isso encerre as aplicações sempre. Independente disso o mais apropriado é colocar o código de encerramento no destroyApp.
Eu tenho feito isso pois o pessoal que saca mais de JME recomenda. Mas por que não usar o System.exit()??? Qual a desvantagem dele?
Você não pode chamar System.exit() em aplicações MIDP pois não é suportado. Se usar, vai ocorrer uma exceção, que logicamente pode fechar a aplicação.
Você deve usar sempre notifyDestroyed().