¿Cómo detener un programa que se ejecuta en Eclipse?

107

No puedo encontrar una opción para detener un programa en ejecución (ya sea en modo de depuración o lanzamiento).

Entonces, por ahora, detengo el programa (devolviendo el control a Eclipse) simplemente cerrando el emulador.

¿Existe una forma mejor de hacer esto? ¿De tal manera que no necesito cerrar (y reiniciar) el emulador?

Eva de Android
fuente

Respuestas:

112

Entiendo que quieres detener tu aplicación en el emulador. Para esto, puede abrir la ventana de dispositivos (en la perspectiva de depuración), seleccionar el proceso y luego presionar el botón de detener en la misma ventana.

Varun
fuente
1
Muchas gracias. Me salvaste la vida. Aceptaré tu respuesta en 7 minutos ... :)
Eve de Android
1
Añadiendo otra forma que acabo de descubrir: en el emulador, seleccione Configuración> Aplicaciones> Administrar aplicaciones> (seleccione aplicación)> Forzar detención.
Android Eve
Ya. Esa es otra forma, pero se necesita tiempo para llegar allí, a menos que tenga eso de fondo. :)
Varun
11
un botón Detener como en Visual Studio sería tan bueno. ugh.
Ian Davis
Acaba de comenzar la derecha aplicación después de la creación del proyecto y al hacer clic en el botón de parada que no mató al proceso, pero disparó una RemoteException sending setActive(false) notificationen el puerto de vista LogCat
Stéphane
77

Aquellos a quienes les resulte tedioso cambiar entre perspectivas para detener el programa (como hice yo), pueden ver las ventanas de los dispositivos en su perspectiva actual seleccionando

Windows > Mostrar vista > Otro ... > Android > Dispositivos

GeekityGeek
fuente
3
¡Gracias, esto es exactamente lo que estaba buscando! +1
Sabobin
+1. ¡Genial!, Y si quiero que vuelva a ejecutarlo, lo vuelvo a iniciar desde el dispositivo y funciona perfectamente.
Francisco Corrales Morales
Un paso más, busque su ID de paquete en la lista. Al principio eso me desanimó, pero luego pensé: "¡Oh, genial! Puedo ver todo". Es bueno ver lo que Android tiene bajo su capó (nota: estoy usando el simulador Genymotion, tal vez el emulador es lo que dices, simplemente no puedo soportar esperar a que se ejecute)
Stephen J
Esto viola el ciclo de vida de la aplicación de Android y puede dar lugar a salidas desagradables que provoquen la imposibilidad de reiniciar la aplicación y obliguen a reiniciar el dispositivo para solucionar el problema.
Dominic Cerisano
13

Tenga en cuenta que en Android, los programas generalmente solo 'se detienen' si termina () o el sistema los destruye cuando se requiere memoria. ¿Por qué detenerse en absoluto? No es necesario que se detenga para reparar / reinstalar / volver a probar, por ejemplo.

DJC
fuente
Esta es una gran idea. Gracias. +1
Víspera de Android
1
@Eve .. es un placer. Para obtener detalles sangrientos, consulte stackoverflow.com/questions/2033914/…
DJC
4
Bien quizás. Pero esto realmente no responde a la pregunta. En mi caso, estoy jugando con la clase AudioTrack y generando un flujo de sonidos. Se vuelve realmente molesto escuchar esa onda sinusoidal todo el tiempo. Tengo que ir a DDMS, buscar el hilo correcto, seleccionarlo y luego encontrar el ícono STOP. Muy cojo.
Vagrant
2
¿Cómo puede restablecer el estado de su programa sin detenerse?
Erik Engheim
Me di cuenta de que con el emulador no volverá a ejecutar su programa hasta después de unos minutos (probablemente porque todavía se está ejecutando). Es útil terminar antes, cuando necesita hacer una pequeña edición, luego verifíquela rápidamente en el Emulador. Y, a menudo, está haciendo varias ediciones pequeñas, por lo que poder detener la aplicación en ejecución y volver a cargarla para verificarla rápidamente le ahorra mucho tiempo.
Azurespot
12

En la perspectiva "Depurar", seleccione la raíz de la aplicación en "Depurar" (donde está la lista de subprocesos activos) y haga clic en el botón Detener.

Chris Thompson
fuente
Gracias a ti también. Entendí tus instrucciones solo después de leer las de @varun. +1
Víspera de Android
@Android Eve, ah, bueno, me alegro de que haya ayudado. ¡Lo siento, no fue lo suficientemente claro!
Chris Thompson
Está bien. Estoy totalmente desorientado con respecto al desarrollo de Android, a pesar (y quizás debido a) muchos años de desarrollo en muchas otras plataformas.
Android Eve
Sí, esta es, con mucho, la solución más sencilla. (De hecho, probablemente debería ser la respuesta aceptada). El botón Detener solo está deshabilitado cuando se resalta un hilo en lugar de la entrada superior [Aplicación de Android].
Colin
7

Trabajando para mi.

Windows -> Perspectiva abierta -> Otro ... -> DDMS

  1. En la vista de Android, en las ventanas de la izquierda, puede ver "Dispositivos". Debe haber una lista de aplicaciones que se están ejecutando ahora (emulador o dispositivos físicos). Haga clic en la aplicación que desea cerrar. Normalmente el nombre es el nombre del paquete + el nombre de la aplicación
  2. Ahora haga clic en el símbolo de "Parar".

Para volver a la vista normal, solo tiene que presionar el botón Java en la parte superior derecha. También puedes hacerlo presionando: Windows -> Abrir perspectiva -> Otro ... -> Java

Zain Ali
fuente
2

esta respuesta no se ocupa de Eclipse, pero dado que esta pregunta surge en una búsqueda de Google para detener un programa de Android en ejecución, me gustaría ofrecer un método de línea de comandos. ejecutar adb shell, busque el PID del proceso con el que desea matar ps, por ejemplo, el mío fue:

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

entonces solo kill 2097debería ver la pantalla principal aparecer nuevamente.

jcomeau_ictx
fuente
Violación del ciclo de vida de la aplicación. Puede causar problemas con los recursos del sistema que no se liberan y obligar a que se borre el reinicio del dispositivo.
Dominic Cerisano
0

Agregue un punto de interrupción a su código donde desea detener y luego ejecútelo en modo de depuración presionando F11.

salman khalid
fuente
0

Zombis Android Figura 1: muchos zombis murieron durante la investigación de esta respuesta

No se recomienda matar un proceso de Java VM de una aplicación de Android a nivel de sistema operativo. Desafortunadamente, esto es exactamente lo que hace la ventana del dispositivo eclipse "stop", al igual que System.exit () y el comando de shell "kill".

Esto subvierte los métodos normales del ciclo de vida de las aplicaciones, como onStop (), onDestroy () y finalize ().

Muchas aplicaciones requieren estos métodos para una salida elegante (por ejemplo, si usan objetos del sistema como Sensor, MediaPlayer, Equalizer, Visualizer, etc.).

Estos objetos del sistema merodean por los recursos del sistema si no se llama a release () explícitamente durante estos métodos de ciclo de vida. Ver fig. 1 arriba. Esto puede evitar que una aplicación se reinicie e incluso requerir un reinicio. Ese es el aspecto deshonroso.

La única solución es asegurarse de salir siempre limpiamente de su aplicación con una llamada a onStop () o onDestroy () o al menos finalize (). El depurador hace esto, al igual que el sistema operativo cuando se apaga.

Puede configurar su aplicación para atrapar eventos SIG_HUP para forzar una salida elegante de la línea de comando.

La única vez que mataría la máquina virtual de la aplicación es en estado ANR (ya un zombi). Los ANR deben ser corregidos. Nunca implemente una aplicación que pueda entrar en este estado. Es extremadamente grosero.

Puede usar Google Analytics y Play Store para monitorear estos en implementación. No desea que los usuarios enojados den reseñas ANR de una sola estrella después de tener que reiniciar debido a su aplicación zombie. Muy mal.

Recuerde que Android es Linux: trátelo como un sistema operativo real y respete el ciclo de vida de la aplicación, de lo contrario, seguramente se enfrentará al temido Apocalipsis Zombie.

PD: Si no te gusta la analogía Zombie, ¿qué tal Fantasia?

ingrese la descripción de la imagen aquí

Dominic Cerisano
fuente
0

Ver imagen: 1. Haga clic en DDMS; 2. Seleccione la aplicación actual; 3. Haga clic en "Detener" ingrese la descripción de la imagen aquí

Eugene Bosikov
fuente
Hago esto y la aplicación deja de depurar. pero hay un caso: 1- desconecte el dispositivo del usb, ejecute la aplicación y luego, cuando la aplicación tenga un error, se cierre y luego, en cada ejecución, abra el formulario de depuración y espere a que se conecte el cable USB o presione el botón trasero. 2- el dispositivo se conecta a usb y la aplicación se ejecuta (Ctrl + f11) y luego, la aplicación se ejecuta automáticamente en modo de depuración. Para resolver esto, creé un nuevo proyecto y, uno por uno, copié / pegué archivos en el nuevo proyecto, pero lo mismo sucedió nuevamente. ¿Alguna ayuda ahora?
Ahmad Ebrahimi