Ответ
Система может убить приложение в следующих случаях:
-
Недостаток памяти - когда системе критически не хватает RAM, она завершает фоновые процессы, начиная с наименее важных (по LRU-алгоритму).
-
Долгая работа в фоне - если приложение выполняет длительные операции в сервисе без уведомления пользователя (foreground service).
-
ANR (Application Not Responding) - когда главный поток блокируется более чем на 5 секунд.
-
Ошибки в коде - необработанные исключения, утечки памяти, превышение лимитов (например, BroadcastReceiver timeout в 10 сек).
-
Системные события - перезагрузка устройства, смена языка, обновление системы.
Пример ANR:
// Этот код вызовет ANR
button.setOnClickListener {
Thread.sleep(10000) // Блокировка UI потока
}
Чтобы избежать убийства, используйте foreground services, WorkManager, сохраняйте состояние в onSaveInstanceState().