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?