Какие знаешь приоритеты процессов в Android

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

Ответ

В Android есть 5 уровней приоритета процессов (от высокого к низкому):

  1. Foreground - процесс с активным компонентом (Activity, Service с startForeground(), BroadcastReceiver.onReceive())
  2. Visible - процесс с видимым, но неактивным Activity (например, диалог поверх)
  3. Service - процесс с работающим Service (не foreground)
  4. Background - процесс с остановленными Activity (сохранен в back stack)
  5. Empty - процесс без активных компонентов (кеширован для быстрого запуска)

Пример Service с высоким приоритетом:

val serviceIntent = Intent(this, MyService::class.java)
startForegroundService(serviceIntent)

// В сервисе:
override fun onCreate() {
    startForeground(NOTIFICATION_ID, createNotification())
}

Система убивает процессы от низшего приоритета при нехватке памяти.