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?
android
eclipse
android-emulator
Eva de Android
fuente
fuente
RemoteException sending setActive(false) notification
en el puerto de vista LogCatAquellos 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
fuente
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.
fuente
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.
fuente
Trabajando para mi.
Windows -> Perspectiva abierta -> Otro ... -> DDMS
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
fuente
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 matarps
, por ejemplo, el mío fue:u0_a46 2097 37 175520 19912 ffffffff 40037ebc S net.unternet.bleah.blarg
entonces solo
kill 2097
debería ver la pantalla principal aparecer nuevamente.fuente
Agregue un punto de interrupción a su código donde desea detener y luego ejecútelo en modo de depuración presionando F11.
fuente
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?
fuente
Ver imagen: 1. Haga clic en DDMS; 2. Seleccione la aplicación actual; 3. Haga clic en "Detener"
fuente