В документации по службам переднего плана описывается текущее поведение служб переднего плана 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
.