Малюнок 1 - Багато зомбі були вбиті під час дослідження цього відповіді
Вбивати додаток для Android процес Java VM на рівні ОС не рекомендується. На жаль, саме це робить "зупинка" вікна пристрою затемнення, як і System.exit () та команда "kill" оболонки.
Це підриває звичайні методи життєвого циклу додатків, такі як onStop (), onDestroy () та завершується ().
У багатьох додатках потрібні ці методи для витонченого виходу (наприклад, якщо вони використовують системні об'єкти, такі як Sensor, MediaPlayer, Equalizer, Visualizer тощо).
Ці системні об'єкти зависають із зомбі загибелі на системних ресурсах, якщо випуск () не викликається явно під час цих методів життєвого циклу. Див. Рис. 1 вище. Це може запобігти перезавантаженню програми та навіть вимагати перезавантаження. Це непристойний аспект.
Єдине рішення - переконатися, що ви завжди чисто виходите зі свого додатка, зателефонувавши на onStop () або onDestroy () або принаймні завершивши (). Налагоджувач робить це, як і ОС при відключенні.
Ви можете налаштувати свою програму на захоплення подій SIG_HUP, щоб змусити витончений вихід із командного рядка.
Єдиний раз, коли ви вбили б програму VM, перебуваєте в ANR (вже зомбі) стані. ANR повинні бути виправлені. Ніколи не розгортайте додаток, який може перейти в цей стан. Це надзвичайно грубо.
Ви можете використовувати аналітику Google і Play Store, щоб контролювати їх під час розгортання. Ви не хочете, щоб розлючені користувачі давали огляди ANR з однією зіркою після перезавантаження через вашу програму зомбі. Дуже погано.
Пам’ятайте, що Android - це Linux: ставитесь до нього як до справжньої ОС та поважайте життєвий цикл програми, інакше ви неодмінно зіткнетесь з жахливим апокаліпсисом зомбі.
PS: Якщо вам не подобається аналогія Zombie, як щодо Fantasia?