В документации по активным службам описано их текущее поведение в Android. В документации приведены рекомендации для большинства приложений, независимо от того, предназначены ли они для последней версии Android.
На этой странице описаны некоторые из последних важных изменений в активных службах и их последствия для приложений, которые не предназначены для последней версии платформы Android. Во многих случаях рекомендации, которые были необязательными для приложений с более низким целевым уровнем API, становятся обязательными для приложений с более высоким целевым уровнем API.
Android 16 (уровень API 36)
Следующие изменения касаются приложений, которые работают на устройствах с Android 16 или более поздней версией, независимо от целевого уровня API:
Фоновые задания, запущенные из активной службы, теперь должны соответствовать своим квотам на время выполнения. Это касается как задач, запланированных непосредственно с помощью
JobScheduler, так и задач, созданных другими библиотеками, например WorkManager илиDownloadManager.Чтобы передавать данные в ответ на действие пользователя, используйте задание передачи данных, инициированное пользователем. Эти задания не учитываются в обычных квотах.
Android 15 (уровень API 35)
Для приложений с целевым уровнем API 35 или выше действуют следующие требования:
- Введены новые ограничения на время работы активной службы
dataSync. Эти ограничения описаны в разделе Поведение активных служб при тайм-ауте. Похожие ограничения действуют для типа активной службыmediaProcessing, который появился в Android 15. - Активным службам
BOOT_COMPLETEDбольше не разрешено запускать определенные активные службы. - Приложения с разрешением
SYSTEM_ALERT_WINDOWмогут запускать активные службы в фоновом режиме, только если у них есть видимое окно оверлея или они соответствуют одному из исключений из ограничений на запуск в фоновом режиме. Ранее исключение для таких приложений было шире.
Android 14 (уровень API 34)
Ниже перечислены требования к приложениям с целевым уровнем API 34 или выше.
- Вы должны объявить все активные службы и указать их типы.
- Приложения должны запрашивать разрешение, соответствующее типу работы, которую будет выполнять активная служба. Каждому типу активной службы соответствует определенный тип разрешения. Например, если приложение запускает активную службу, которая использует камеру, необходимо запросить разрешения
FOREGROUND_SERVICEиFOREGROUND_SERVICE_CAMERA. Если приложение предназначено для целевого уровня API 34 или выше и не запрашивает соответствующее разрешение, система выдает ошибкуSecurityException.
Android 12 (уровень API 31)
Для приложений с целевым уровнем API 31 или выше действуют следующие требования:
- Запускать активные службы, когда приложение работает в фоновом режиме, запрещено, за некоторыми исключениями. Дополнительную информацию, в том числе об исключениях из этого правила, можно найти в статье Ограничения на запуск активной службы из фонового режима.
Android 11 (уровень API 30)
Для приложений с целевым уровнем API 30 или выше действуют следующие требования:
- Если активные службы приложения используют камеру или микрофон, оно должно объявить службу с типом
cameraилиmicrophoneсоответственно.
Android 10 (уровень API 29)
Для приложений с целевым уровнем API 29 или выше действуют следующие требования:
- Если активные службы приложения используют данные о местоположении, приложение должно объявить службу с типом
location.
Android 9 (уровень API 28)
В Android 9 появилось разрешение FOREGROUND_SERVICE. Это разрешение необходимо приложениям, которые работают на устройствах с Android 9 и используют активные службы.
Если приложение с целевым уровнем API 28 или выше попытается создать активную службу без запроса разрешения FOREGROUND_SERVICE, система выдаст ошибку SecurityException.