Ответ
При уничтожении сервиса система Android выполняет следующие шаги:
-
onDestroy() - вызывается перед уничтожением сервиса. Здесь нужно освобождать ресурсы (отписываться от событий, закрывать соединения и т.д.)
-
Уничтожение процесса (если сервис был последним активным компонентом в процессе) - система завершает процесс, если:
- Сервис был запущен через
startService() - Нет активных компонентов (Activity, BroadcastReceiver и т.д.)
- Сервис не является foreground service
- Сервис был запущен через
Пример:
override fun onDestroy() {
super.onDestroy()
// Освобождаем ресурсы
notificationManager.cancel(NOTIFICATION_ID)
handler.removeCallbacksAndMessages(null)
}
Для bound сервисов порядок аналогичный, но сервис уничтожается, когда все клиенты отключаются (unbind).