Ответ
В Android есть 5 уровней приоритета процессов (от высокого к низкому):
- Foreground - процесс с активным компонентом (Activity, Service с startForeground(), BroadcastReceiver.onReceive())
- Visible - процесс с видимым, но неактивным Activity (например, диалог поверх)
- Service - процесс с работающим Service (не foreground)
- Background - процесс с остановленными Activity (сохранен в back stack)
- Empty - процесс без активных компонентов (кеширован для быстрого запуска)
Пример Service с высоким приоритетом:
val serviceIntent = Intent(this, MyService::class.java)
startForegroundService(serviceIntent)
// В сервисе:
override fun onCreate() {
startForeground(NOTIFICATION_ID, createNotification())
}
Система убивает процессы от низшего приоритета при нехватке памяти.