Без чего не запустится сервис в новых версиях Android

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

Ответ

Сервис не запустится без явного объявления в манифесте (AndroidManifest.xml). Начиная с Android 8.0 (API 26), для сервисов также требуется:

  1. Явное указание foregroundServiceType (если сервис foreground)
  2. Запуск через startForegroundService() с последующим вызовом startForeground() в течение 5 секунд
  3. Разрешение FOREGROUND_SERVICE в манифесте

Пример для foreground сервиса:

<service 
    android:name=".MyService"
    android:foregroundServiceType="location|camera" />
startForegroundService(Intent(this, MyService::class.java))

Для background сервисов на Android 9+ есть ограничения - они могут быть запущены только приложением на переднем плане.