Рисунок 1 - Многие зомби были убиты во время исследования этого ответа
Уничтожение приложения Android в процессе Java VM на уровне ОС не рекомендуется. К сожалению, это именно то, что делает окно «stop» устройства eclipse, как и System.exit () и команда «kill» оболочки.
Это подрывает обычные методы жизненного цикла приложения, такие как onStop (), onDestroy () и finalize ().
Многим приложениям требуются эти методы для корректного выхода (например, если они используют системные объекты, такие как Sensor, MediaPlayer, Equalizer, Visualizer и т. Д.).
Эти системные объекты держатся с помощью мертвых ручек зомби на системных ресурсах, если release () не вызывается явно во время этих методов жизненного цикла. Смотрите рис. 1 выше. Это может помешать перезапуску приложения и даже потребовать перезагрузки. Это неблагодарный аспект.
Единственное решение - убедиться, что вы всегда корректно выходите из приложения, вызывая onStop () или onDestroy () или, по крайней мере, finalize (). Это делает отладчик, как и ОС при завершении работы.
Вы можете настроить свое приложение так, чтобы оно перехватывало события SIG_HUP для принудительного выхода из командной строки.
Единственный раз, когда вы убьете виртуальную машину приложения, находится в состоянии ANR (уже зомби). ANR должны быть фиксированными. Никогда не развертывайте приложение, которое может войти в это состояние. Это очень грубо.
Вы можете использовать Google Analytics и Play Store, чтобы отслеживать их в процессе развертывания. Вы не хотите, чтобы сердитые пользователи давали отзывы об одной звезде ANR после перезагрузки из-за вашего приложения-зомби. Очень плохо.
Помните, что Android - это Linux: относитесь к нему как к реальной ОС и соблюдайте жизненный цикл приложения, иначе вы непременно столкнетесь с ужасным Zombie Apocalypse.
PS: Если вам не нравится аналогия с зомби, как насчет Фантазии?