Evento do Botão Vermelho (END)

11 respostas
JavaES

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.

11 Respostas

brunoccouto

posta o código ai, fica mais fácil de entender…

JavaES

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.

P

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ó.

JavaES

Huahuahua siniiiissstro… valeu, muito obrigado.

C

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.

C

Em celulares multi-task o END não encerra, apenas suspende.

Outra coisa, não use System.exit() !!

P

cmoscoso:

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.

JavaES

cmoscoso:

Outra coisa, não use System.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 :).

C

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.

JavaES

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?

N

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().

Criado 28 de abril de 2008
Ultima resposta 30 de abr. de 2008
Respostas 11
Participantes 5