Когда система может перезапустить Service

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

Ответ

Система может перезапустить Service в следующих случаях:

  1. Нехватка памяти – если система убивает процесс из-за нехватки ресурсов, сервис с START_STICKY или START_REDELIVER_INTENT будет перезапущен автоматически.

  2. Возврат из onStartCommand() – если сервис возвращает START_STICKY, система попытается пересоздать его после смерти процесса. Если возвращает START_REDELIVER_INTENT, то перезапустит с последним интентом.

  3. Явный вызов startService() – если сервис был остановлен, но снова вызван через startService().

Пример:

override fun onStartCommand(intent: Intent?, flags: Int, startId: Int): Int {
    return START_STICKY // или START_REDELIVER_INTENT
}