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.
Evento do Botão Vermelho (END)
11 Respostas
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.
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.
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() !!
Em celulares multi-task o END não encerra, apenas suspende.
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.
Outra coisa, não useSystem.exit()!!
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().