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