android - studio - ¿Cómo detener un programa que se ejecuta en Eclipse?
programacion android pdf 2018 (9)
No puedo encontrar una opción para detener un programa en ejecución (ya sea en modo depuración o versión).
Así que por ahora, detengo el programa (devolviendo el control a Eclipse) simplemente cerrando el emulador.
¿Hay una mejor manera de hacer esto? ¿Tal que no necesito cerrar (y reiniciar) el emulador?
Agregue punto de interrupción a su código donde desea detener y luego ejecútelo en modo Depuración presionando F11.
Aquellos a quienes les resulta tedioso cambiar de perspectiva para detener el programa (como hice yo), puedes ver las ventanas de los dispositivos en tu perspectiva actual seleccionando
Windows > Mostrar vista > Otros ... > Android > Dispositivos
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 de detener.
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.
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é parar en absoluto? No necesita detenerse para arreglar / reinstalar / volver a probar, por ejemplo.
Trabajando para mi
Windows -> Perspectiva abierta -> Otro ... -> DDMS
- En la vista de Android, en la ventana izquierda, puede ver "Dispositivos". Debería haber una lista de aplicaciones que se está 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
- 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 puede hacerlo presionando: Windows -> Perspectiva abierta -> Otro ... -> Java
Ver imagen: 1. Haga clic en DDMS; 2. Seleccione la aplicación actual; 3. Haga clic en "Parar"
Figura 1 - Muchos zombis fueron asesinados durante la investigación de esta respuesta
No se recomienda matar a una aplicación de Android El proceso de VM de Java en el nivel del sistema operativo. Desafortunadamente, esto es exactamente lo que hace la ventana del dispositivo eclipse "stop", al igual que System.exit () y el comando "kill" del shell.
Esto subvierte los métodos normales del ciclo de vida de la aplicación, como onStop (), onDestroy () y finalize ().
Muchas aplicaciones requieren estos métodos para una salida ordenada (por ejemplo, si usan objetos del sistema como Sensor, MediaPlayer, Ecualizador, Visualizador, etc.).
Estos objetos del sistema se quedan con ataques de muerte zombie en los recursos del sistema si release () no se llama 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 desvergonzado.
La única solución es asegurarse de que siempre salga de la aplicación limpiamente con una llamada a onStop () o onDestroy () o al menos finalize (). El depurador hace esto, al igual que el sistema operativo en el cierre.
Puede configurar su aplicación para atrapar eventos SIG_HUP para forzar una salida elegante desde la línea de comando.
La única vez que mataría a la VM de la aplicación está en estado ANR (ya es un zombie). Los ANR deben ser corregidos. Nunca implemente una aplicación que pueda ingresar a este estado. Es extremadamente grosero.
Puede usar Google Analytics y Play Store para monitorearlos en la implementación. No querrás que los usuarios enojados den comentarios ANR de una estrella después de tener que reiniciar debido a tu 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 Zombie Apocalypse.
PD: Si no te gusta la analogía Zombie, ¿qué hay de Fantasia?
esta respuesta no trata con Eclipse, pero dado que esta pregunta surge en una búsqueda de Google para detener un programa Android en ejecución, me gustaría ofrecer un método de línea de comandos. ejecuta adb shell
, encuentra el PID del proceso que deseas matar con ps
, por ejemplo, el mío fue:
u0_a46 2097 37 175520 19912 ffffffff 40037ebc S net.unternet.bleah.blarg
entonces, simplemente kill 2097
y deberías ver la pantalla principal volver a aparecer.