Зачем андроид убивает мои приложения? Недавно открытое приложение вскоре закрылось. Почему андроид агрессивно выгружает приложения при достаточной памяти? Причины вылетов приложений.
Про жизненный цикл activity в Android - это мы всё читали:
- Когда ваше приложение умирает – жизненный цикл activity в Android для QA / Хабр
- Hey Android, Please Keep My Activities! | by Calvin Noronha | MindOrks | Medium
- Ограничения на запуск действий в фоновом режиме | App architecture | Android Developers
Killing recent apps
По-идее убивание (приостановка) приложения должно происходить спустя определённый промежуток времени (30 minutes), например:
dumpsys deviceidle output: Settings: ... light_max_idle_to=+15m0s0ms ... inactive_to=+30m0s0ms ... idle_after_inactive_to=+30m0s0ms
А приложения выдающие notification on the notification bar
должны продолжать работать:
Running services will be terminated every 30 minutes. Services that wish to remain alive for longer than this must call Service.startForeground, which places a notification on the notification bar, so that users know that your service is permanently running and potentially sucking battery life.
Но что-то в Android 10 пошло не так, и такие VPN приложения как Orbot, Rethink и personalDNSfilter стали беспощадно убиваться ActivityManager, о чем был начат подробный холи-вар:
Что кроме personalDNSfilter убиваются и другие VPN приложения такие как Orbot и Rethink выяснилось чуть позже, и проблема заключалась в том, что:
- ActivityManager нещадно убивает каждое 3-4 ранее открытое приложение после отключения экрана;
- Сделать VPN приложение постоянным в сетевых настройках (Не отключаться от VPN) не спасает от убийцы ActivityManager;
- Прошивка гаджета самая новая;
- Приложения все с F-Droid;
- Несмотря на уведомления в notification bar, VPN приложения убиваются ActivityManager;
- Свободной RAM 2 из 4 ГБ;
- Экономия батареи для приложений, менеджер батареи, DuraSpeed - всё отключено, жри не хочу;
- В настройках разработчика Вытеснять фоновые Activity отключено, Лимит фоновых процессов стандартный;
- Сброс настроек сети и приложений проблему не решают;
- Сброс настроек к заводским настройкам, также проблему не решают;
- Короче.., полная жопа...
Подобная проблема создаёт приличный геморрой, когда переключившись между 3-4 приложениями, через 15 сек отключился экран, слетело VPN приложение и все твои данные-досвиданные пошли раком по-болотам...
Наглядное видео этого глюкодрома можно скачать по ссылке:
- vid_20250827_150156.mp4 (88.92 MB)
Download link
https://anonfile.co/7SWyVdECl8EDVoq/file - logcat-activitymanager.txt
https://pastecode.io/s/71r8po6g
Перечитана была туева хуча всякого шлака:
- Почему андроид агрессивно выгружает приложения при достаточной памяти? — Хабр Q&A
- Почему мои приложения продолжают падать на Android?
- 18 лучших исправлений - 4pmtech (Russia)
android - Система убивает приложение в случайные моменты времени без краша(?) - - Stack Overflow на русском
Почему вылетают приложения на Android и как с этим бороться - ТопНомер.ру - и прочая...литература
Итого, ИИ (Галимый шаблонизатор) и большинство людей
выдало нам такие причины вылетов приложений и способы решения:
- Перезагрузить телефон;
- Переустановить приложение;
- Удалить кэш приложения;
- Освободить место в хранилище;
- Проверить сетевое соединение;
- Проверить на (барано-)вирусы;
- Сбросить Android до заводских настроек.
Но нифига непомогало - в числе прочего:
- Протирать экран;
- ...
- Перепрошивать - зае.ало.
Система убивает каждое 3-4 ранее открытое приложение, но termux сессия почему-то остаётся нетронутой и продолжает работать - это придавало сил ковырять дальше.., шырше и глубже!
This is strange
Да, - это странно, НО ФАКТ!
Orbot, Rethink и personalDNSfilter падали постоянно после попадания на 3-4 позицию списка недавно открытых приложений.
Вспомнилось ещё одно VPN приложение - ProtonVPN.
После установки Proton VPN я запустил его и попробовал открыть ещё 4 недавних приложения, свернул список открытых приложений на рабочий стол и дождался выключения экрана. После включения экрана я увидел, что Proton VPN продолжает работать!
Затем я отключил Proton VPN и открыл PersonalDNSfilter VPN, повторил все операции переключения между недавними приложениями... и - о чудо! PersonalDNSfilter продолжает работать!!!
Затем я удалил Proton VPN, перезагрузил устройство и перепроверил - о чудо! PersonalDNSfilter продолжает работать!!!
Затем я обратно включил Duraspeed, Battery Manager, Fly и режим энергосбережения, перезагрузил устройство и перепроверил - о чудо! PersonalDNSfilter продолжает работать!!!
НЕ ЗНАЮ, ЧТО ПРОИЗОШЛО (обновился mdk/sdk, обновились некоторые скрытые системные настройки/конфиги и т.д.), НО после установки Proton VPN ПРОБЛЕМА ИСПРАВЛЕНА, и теперь все приложения с сообщением в панели уведомлений, включая personalDNSfilter, не закрываются ActivityManager после каждого выключения экрана!
Перед установкой Proton VPN был сброс до заводских настроек, но даже с заводскими настройками проблема наблюдалась при использовании только одних предустановленных приложений, а уже после теста голой системы были установлены все дополнительные 200 приложений и уже потом поверх них установлен Proton VPN.
Правда до Proton VPN были ещё небольшие изменение в конфигурации ActivityManager:
# settings put global activity_manager_constants max_cached_processes=128 # cmd device_config put activity_manager max_cached_processes 128 # cmd device_config put activity_manager max_phantom_processes 32 // where (<millis>) 3600000 = 60min. # device_config put activity_manager max_empty_time_millis 3600000 # device_config list activity_manager activity_manager/Phenotype_flags= activity_manager/max_cached_processes=128 activity_manager/max_empty_time_millis=3600000 activity_manager/max_phantom_processes=32 # settings get global activity_manager_constants max_cached_processes=128
Внесённые изменения в activity_manager_constants сохранились после перезапуска, но похоже на то, что они не работали, - после изменений я перезапускал и проверял работу устройства несколько раз, проблема сохранялась.
Спустя несколько дней после этих изменений, был установлен Proton VPN и проблема исчезла, после чего Proton VPN был удалён.
Никаких иных манипуляций с гаджетом не выполнялось, и после сброса на заводские настройки им почти не пользовались!
Эпилог
Примечательно, что не все сделанные в системе Андроид косяки можно исправить сбросом настроек к заводским.
Не исключено, что проблема началась после использования программы EnforceDoze с рут-правами, которая однажды поломала камеру после включения опции Disable all sensors on screen off (motion, camera...).
Отключение/включение/сброс настроек EnforceDoze не помогло восстановить работу камеры. Камера снова заработала кажись после удаления/переустановки EnforceDoze и/или вкл/выкл Disable all sensors on screen off - как-то так кажись.
Возможно EnforceDoze задело ещё кое-какие системные конфиги, которые были восстановлены после установки Proton VPN?!
Или то изменения в конфигурации ActivityManager применились с запизданием задержкой 2-3 дня и/или после 5-10й перезагрузки.., а установка Proton VPN оказалась случайным участником этого глюкодрома..:)
Учитывая, что встроенные в Андрона бэкдоры под названием ака Сервисы Google Play постоянно что-то загружают и типа обновляют (без предупреждения), то сказать однозначно в какой части системы глючит, - довольно сложно.
Иными словами, источник проблемы в данном случае достоверно неизвестен, но то, что виной всему говнокод (shitcode), - никаких сомнений нет.
EnforceDoze решено удалить накуй, имхо и без него ActivityManager с убиванием приложений отлично справляется.

