В какой момент система может убить приложение

«В какой момент система может убить приложение» — вопрос из категории Android компоненты, который задают на 23% собеседований Android Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Система может убить приложение в следующих случаях:

  1. Недостаток памяти - когда системе критически не хватает RAM, она завершает фоновые процессы, начиная с наименее важных (по LRU-алгоритму).

  2. Долгая работа в фоне - если приложение выполняет длительные операции в сервисе без уведомления пользователя (foreground service).

  3. ANR (Application Not Responding) - когда главный поток блокируется более чем на 5 секунд.

  4. Ошибки в коде - необработанные исключения, утечки памяти, превышение лимитов (например, BroadcastReceiver timeout в 10 сек).

  5. Системные события - перезагрузка устройства, смена языка, обновление системы.

Пример ANR:

// Этот код вызовет ANR
button.setOnClickListener {
    Thread.sleep(10000) // Блокировка UI потока
}

Чтобы избежать убийства, используйте foreground services, WorkManager, сохраняйте состояние в onSaveInstanceState().