Как система определяет, какой процесс умрет первым в Anroid

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

Ответ

При нехватке памяти Android использует иерархию приоритетов для завершения процессов. Система убивает процессы в таком порядке:

  1. Пустые (Empty) – не содержат активных компонентов
  2. Фоновые (Background) – выполняют невидимую работу (например, сервисы)
  3. Сервисы (Service) – работают в фоне (музыка, загрузки)
  4. Видимые (Visible) – частично видны (диалоги)
  5. Передний план (Foreground) – активное приложение
  6. Персистентные (Persistent) – системные процессы (телефония)

Пример проверки важности процесса:

val importance = ActivityManager.RunningAppProcessInfo.importance
when {
    importance <= IMPORTANCE_FOREGROUND -> "Высокий приоритет"
    importance <= IMPORTANCE_VISIBLE -> "Средний приоритет"
    else -> "Низкий приоритет (может быть убит)"
}