В каком порядке система уничтожает компоненты Service

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

Ответ

При уничтожении сервиса система Android выполняет следующие шаги:

  1. onDestroy() - вызывается перед уничтожением сервиса. Здесь нужно освобождать ресурсы (отписываться от событий, закрывать соединения и т.д.)

  2. Уничтожение процесса (если сервис был последним активным компонентом в процессе) - система завершает процесс, если:

    • Сервис был запущен через startService()
    • Нет активных компонентов (Activity, BroadcastReceiver и т.д.)
    • Сервис не является foreground service

Пример:

override fun onDestroy() {
    super.onDestroy()
    // Освобождаем ресурсы
    notificationManager.cancel(NOTIFICATION_ID)
    handler.removeCallbacksAndMessages(null)
}

Для bound сервисов порядок аналогичный, но сервис уничтожается, когда все клиенты отключаются (unbind).