Ответ
При нехватке памяти Android использует иерархию приоритетов для завершения процессов. Система убивает процессы в таком порядке:
- Пустые (Empty) – не содержат активных компонентов
- Фоновые (Background) – выполняют невидимую работу (например, сервисы)
- Сервисы (Service) – работают в фоне (музыка, загрузки)
- Видимые (Visible) – частично видны (диалоги)
- Передний план (Foreground) – активное приложение
- Персистентные (Persistent) – системные процессы (телефония)
Пример проверки важности процесса:
val importance = ActivityManager.RunningAppProcessInfo.importance
when {
importance <= IMPORTANCE_FOREGROUND -> "Высокий приоритет"
importance <= IMPORTANCE_VISIBLE -> "Средний приоритет"
else -> "Низкий приоритет (может быть убит)"
}