Como parar um programa em execução no Eclipse?

107

Não consigo encontrar uma opção para interromper um programa em execução (seja no modo de depuração ou versão).

Portanto, por enquanto, eu paro o programa (retornando o controle ao Eclipse) simplesmente fechando o emulador.

Existe um jeito melhor de fazer isso? De modo que não preciso fechar (e reiniciar) o emulador?

Véspera de Android
fonte

Respostas:

112

Eu entendo que você deseja interromper seu aplicativo no emulador. Para isso, você pode abrir a janela de dispositivos (na perspectiva de depuração), selecionar o processo e pressionar o botão parar na mesma janela.

Varun
fonte
1
Muito obrigado. Você salvou minha vida. Aceitarei sua resposta em 7 minutos ... :)
Android Eve
1
Adicionando outra maneira que acabei de descobrir: no emulador, selecione Configurações> Aplicativos> Gerenciar aplicativos> (selecione o aplicativo)> Forçar parada.
Android Eve
Ya. essa é outra maneira, mas leva tempo para chegar lá, a menos que você tenha isso ao fundo. :)
Varun
11
um botão Parar como no Visual Studio seria muito bom. ugh.
Ian Davis
Apenas iniciei o aplicativo logo após a criação do projeto e ao clicar no botão parar, ele não encerrou o processo, mas disparou um RemoteException sending setActive(false) notificationna janela de exibição
logCat
77

Aqueles que consideram tedioso alternar entre as perspectivas para interromper o programa (como eu), você pode ver as janelas dos dispositivos em sua perspectiva atual selecionando

Windows > Mostrar Visualização > Outro ... > Android > Dispositivos

GeekityGeek
fonte
3
Obrigado, isso é exatamente o que eu estava procurando! +1
Sabobin
+1. Ótimo! E se eu quiser executá-lo novamente, basta iniciá-lo novamente no dispositivo e ele funciona perfeitamente.
Francisco Corrales Morales
Mais uma etapa, encontre seu packageID na lista. No começo eu fiquei desconcertado com isso, mas depois pensei "Que legal! Posso ver tudo." É bom ver o que o Android tem sob seu capô (nota: estou usando o simulador Genymotion, talvez emulador seja o que você diz, eu simplesmente não aguento esperar que ele seja executado)
Stephen J
Isso viola o ciclo de vida do aplicativo Android e pode levar a saídas desagradáveis, resultando na incapacidade de reiniciar o aplicativo e forçando a reinicialização do dispositivo para resolver o problema.
Dominic Cerisano
13

Lembre-se de que, no Android, os programas geralmente só 'param' se você terminar () ou o sistema os destrói quando a memória é necessária. Por que parar? Você não precisa parar para consertar / reinstalar / testar novamente, por exemplo.

DJC
fonte
Este é um grande insight. Obrigado. +1
Android Eve
1
@Eve .. o prazer é meu. Para detalhes sangrentos, verifique stackoverflow.com/questions/2033914/…
DJC
4
Bem, talvez. Mas isso realmente não responde à pergunta. No meu caso, estou brincando com a classe AudioTrack e gerando um fluxo de sons. É muito chato ouvir essa onda senoidal o tempo todo. Tenho que ir ao DDMS, procurar o tópico correto, selecioná-lo e encontrar o ícone PARAR. Muito coxo.
Vagrant,
2
Como você pode redefinir o estado do seu programa sem parar?
Erik Engheim 01 de
Percebi que, com o emulador, ele não executará seu programa novamente após alguns minutos ou mais (provavelmente porque ainda está em execução). É útil terminar mais cedo, quando você precisar fazer uma pequena edição e, em seguida, verificar rapidamente no emulador. E, frequentemente, você está fazendo várias pequenas edições, portanto, poder interromper o aplicativo em execução e recarregá-lo para verificar rapidamente economiza muito tempo.
Azurespot de
12

Na perspectiva "Debug", selecione a raiz do aplicativo em "Debug" (onde está a lista de threads ativos) e clique no botão parar.

Chris Thompson
fonte
obrigado também. Eu entendi suas instruções somente depois de ler as de @varun. +1
Android Eve
@Android Eve, ah, estou feliz que ajudou. Desculpe, não foi claro o suficiente!
Chris Thompson
Isso está ok. Estou totalmente desorientado em relação ao desenvolvimento do Android, apesar (e talvez por causa de) muitos anos de desenvolvimento em muitas outras plataformas.
Android Eve
Sim, esta é de longe a solução mais fácil. (Na verdade, deve ser a resposta aceita prob). O botão Parar só é desativado quando um tópico é destacado em vez da entrada superior [Aplicativo Android].
Colin
7

Trabalhando para mim.

Windows -> Abrir perspectiva -> Outro ... -> DDMS

  1. Na visualização do Android, nas janelas à esquerda, você pode ver "Dispositivos". Deve haver uma lista de aplicativos que estão em execução agora (emulador ou dispositivos físicos). Clique no aplicativo que deseja fechar. Normalmente o nome é o nome do pacote + o nome do aplicativo
  2. Agora clique no símbolo "Parar".

Para voltar à visualização normal, basta pressionar o botão Java no canto superior direito. Você também pode fazer isso pressionando: Windows -> Abrir perspectiva -> Outro ... -> Java

Zain Ali
fonte
2

essa resposta não se refere ao Eclipse, mas como essa pergunta surge em uma pesquisa do Google para interromper um programa Android em execução, gostaria de oferecer um método de linha de comando. execute adb shell, encontre o PID do processo com o qual deseja matar ps, por exemplo o meu foi:

u0_a46 2097 37 175520 19912 ffffffff 40037ebc S net.unternet.bleah.blarg

então kill 2097você deve ver a tela principal aparecer novamente.

jcomeau_ictx
fonte
Violação do ciclo de vida do aplicativo. Pode causar problemas com os recursos do sistema não sendo liberados e forçar a reinicialização do dispositivo para limpar.
Dominic Cerisano
0

Adicione o ponto de interrupção ao seu código onde deseja parar e execute-o no modo de depuração pressionando F11.

Salman Khalid
fonte
0

Android Zombies Figura 1 - Muitos zumbis foram mortos durante a pesquisa desta resposta

Não é recomendado matar um processo Java VM de aplicativo Android no nível do sistema operacional. Infelizmente, isso é exatamente o que a janela do dispositivo eclipse "stop" faz, assim como System.exit () e o comando shell "kill".

Isso subverte os métodos normais de ciclo de vida do aplicativo, como onStop (), onDestroy () e finalize ().

Muitos aplicativos exigem esses métodos para uma saída normal (por exemplo, se eles usam objetos do sistema como Sensor, MediaPlayer, Equalizer, Visualizer, etc).

Esses objetos do sistema ficam por aí com alças mortais de zumbis nos recursos do sistema se release () não for chamado explicitamente durante esses métodos de ciclo de vida. Veja a fig. 1 acima. Isso pode impedir que um aplicativo seja reiniciado e até mesmo exigir uma reinicialização. Esse é o aspecto desagradável.

A única solução é garantir que você sempre saia do aplicativo de forma limpa com uma chamada para onStop () ou onDestroy () ou pelo menos finalize (). O depurador faz isso, assim como o sistema operacional ao desligar.

Você pode configurar seu aplicativo para interceptar eventos SIG_HUP para forçar uma saída normal da linha de comando.

A única vez que você mataria a VM do aplicativo é no estado ANR (já um zumbi). ANRs devem ser corrigidos. Nunca implante um aplicativo que pode entrar neste estado. É extremamente rude.

Você pode usar o Google Analytics e a Play Store para monitorar a implantação. Você não quer que usuários irritados dêem avaliações de ANR com estrela única após ter que reiniciar devido ao seu aplicativo zumbi. Muito mal.

Lembre-se de que Android é Linux: trate-o como um sistema operacional real e respeite o ciclo de vida do aplicativo, caso contrário, você certamente enfrentará o temido Apocalipse Zumbi.

PS: Se você não gosta da analogia do zumbi, que tal Fantasia?

insira a descrição da imagem aqui

Dominic Cerisano
fonte
0

Veja a figura: 1. Clique em DDMS; 2. Selecione o aplicativo atual; 3. Clique em "Parar" insira a descrição da imagem aqui

Eugene Bosikov
fonte
Eu faço isso e o aplicativo para de depurar. mas há o caso: 1- desconecte o dispositivo do usb, execute o aplicativo e, quando ocorrer o erro do aplicativo, ele feche e, em seguida, abra o formulário de depuração e aguarde o cabo USB conectar ou pressione o botão traseiro. 2- o dispositivo é conectado ao USB e o aplicativo é executado (Ctrl + F11) e, em seguida, o aplicativo é executado automaticamente no modo de depuração. Para resolver isso, criei um novo projeto, e um a um copiei / colei os arquivos em um novo projeto, mas a mesma coisa aconteceu novamente. Agora alguma ajuda?
Ahmad Ebrahimi de