Начиная с Android 14 (уровень API 34), вы должны объявить соответствующий тип службы для каждой службы переднего плана. Это означает, что вы должны объявить тип службы в манифесте вашего приложения, а также запросить соответствующее разрешение службы переднего плана для этого типа (в дополнение к запросу разрешения FOREGROUND_SERVICE
). Кроме того, в зависимости от типа службы переднего плана вам может потребоваться запросить разрешения во время выполнения перед запуском службы.
Камера
- Foreground service type to declare in manifest under
android:foregroundServiceType
camera
- Permission to declare in your manifest
FOREGROUND_SERVICE_CAMERA
- Constant to pass to
startForeground()
FOREGROUND_SERVICE_TYPE_CAMERA
- Runtime prerequisites
Request and be granted the
CAMERA
runtime permission- Description
Continue to access the camera from the background, such as video chat apps that allow for multitasking.
Подключенное устройство
- Foreground service type to declare in manifest under
android:foregroundServiceType
connectedDevice
- Permission to declare in your manifest
FOREGROUND_SERVICE_CONNECTED_DEVICE
- Constant to pass to
startForeground()
FOREGROUND_SERVICE_TYPE_CONNECTED_DEVICE
- Runtime prerequisites
At least one of the following conditions must be true:
Declare at least one of the following permissions in your manifest:
Request and be granted at least one of the following runtime permissions:
- Description
Interactions with external devices that require a Bluetooth, NFC, IR, USB, or network connection.
- Alternatives
If your app needs to do continuous data transfer to an external device, consider using the companion device manager instead. Use the companion device presence API to help your app stay running while the companion device is in range.
If your app needs to scan for bluetooth devices, consider using the Bluetooth scan API instead.
Синхронизация данных
- Foreground service type to declare in manifest under
android:foregroundServiceType
dataSync
- Permission to declare in your manifest
FOREGROUND_SERVICE_DATA_SYNC
- Constant to pass to
startForeground()
FOREGROUND_SERVICE_TYPE_DATA_SYNC
- Runtime prerequisites
- None
- Description
Data transfer operations, such as the following:
- Data upload or download
- Backup-and-restore operations
- Import or export operations
- Fetch data
- Local file processing
- Transfer data between a device and the cloud over a network
- Alternatives
See Alternatives to data sync foreground services for detailed information.
Здоровье
- Тип службы переднего плана, который нужно объявить в манифесте в разделе
-
android:foregroundServiceType
-
health
- Разрешение объявить в своем манифесте
-
FOREGROUND_SERVICE_HEALTH
- Константа для передачи в
startForeground()
-
FOREGROUND_SERVICE_TYPE_HEALTH
- Предварительные требования для выполнения
Хотя бы одно из следующих условий должно быть истинным:
Объявите разрешение
HIGH_SAMPLING_RATE_SENSORS
в своем манифесте.Запросите и получите хотя бы одно из следующих разрешений среды выполнения:
- Описание
Любые длительные сценарии использования для поддержки приложений из категории фитнеса, таких как трекеры тренировок.
Расположение
- Тип службы переднего плана, который нужно объявить в манифесте в разделе
-
android:foregroundServiceType
-
location
- Разрешение объявить в своем манифесте
-
FOREGROUND_SERVICE_LOCATION
- Константа для передачи в
startForeground()
-
FOREGROUND_SERVICE_TYPE_LOCATION
- Предварительные требования для выполнения
У пользователя должны быть включены службы определения местоположения, а приложению должно быть предоставлено хотя бы одно из следующих разрешений во время выполнения:
- Описание
Долгосрочные варианты использования, требующие доступа к местоположению, например навигация и совместное использование местоположения.
- Альтернативы
Если ваше приложение должно запускаться, когда пользователь достигает определенных мест, рассмотрите возможность использования вместо этого API геозон .
СМИ
- Foreground service type to declare in manifest under
android:foregroundServiceType
mediaPlayback
- Permission to declare in your manifest
FOREGROUND_SERVICE_MEDIA_PLAYBACK
- Constant to pass to
startForeground()
FOREGROUND_SERVICE_TYPE_MEDIA_PLAYBACK
- Runtime prerequisites
- None
- Description
Continue audio or video playback from the background. Support Digital Video Recording (DVR) functionality on Android TV.
- Alternatives
If you're showing picture-in-picture video, use Picture-in-Picture mode.
Обработка медиа
- Тип службы переднего плана, который нужно объявить в манифесте в разделе
-
android:foregroundServiceType
-
mediaProcessing
- Разрешение объявить в своем манифесте
-
FOREGROUND_SERVICE_MEDIA_PROCESSING
- Константа для передачи в
startForeground()
-
FOREGROUND_SERVICE_TYPE_MEDIA_PROCESSING
- Предварительные требования для выполнения
- Никто
- Описание
Сервис для выполнения трудоемких операций с медиаресурсами, таких как преобразование мультимедиа в разные форматы. Система позволяет этой службе работать ограниченное время; при нормальных обстоятельствах этот лимит времени будет составлять 6 часов из каждых 24. (Этот лимит является общим для всех служб переднего плана
mediaProcessing
приложения.)Ваше приложение должно вручную остановить службу обработки мультимедиа в следующем сценарии:
- Когда операция перекодирования завершится или достигнет состояния сбоя, вызовите службу
Service.stopForeground()
иService.stopSelf()
чтобы полностью остановить службу.
- Когда операция перекодирования завершится или достигнет состояния сбоя, вызовите службу
Если период тайм-аута достигнут, система вызывает метод службы
Service.onTimeout(int, int)
. В это время у службы есть несколько секунд для вызоваService.stopSelf()
. Если служба не вызываетService.stopSelf()
, произойдет ANR с этим сообщением об ошибке: «Служба переднего плана <fgs_type> не остановилась в течение времени ожидания: <comComponent_name> ».Примечание .
Service.onTimeout(int, int)
недоступен на Android 14 или более ранней версии. На устройствах с этими версиями, если служба обработки мультимедиа достигает периода ожидания, система немедленно кэширует приложение. По этой причине вашему приложению не следует ждать получения уведомления о тайм-ауте. Вместо этого ему следует прекратить работу службы переднего плана или заменить ее на фоновую службу, как только это станет возможным.
Медиа-проекция
- Тип службы переднего плана, который нужно объявить в манифесте в разделе
-
android:foregroundServiceType
-
mediaProjection
- Разрешение объявить в своем манифесте
-
FOREGROUND_SERVICE_MEDIA_PROJECTION
- Константа для передачи в
startForeground()
-
FOREGROUND_SERVICE_TYPE_MEDIA_PROJECTION
- Предварительные условия выполнения
Вызовите метод
createScreenCaptureIntent()
перед запуском службы переднего плана. При этом пользователю будет показано уведомление о разрешении; пользователь должен предоставить разрешение, прежде чем вы сможете создать службу.После создания службы переднего плана вы можете вызвать
MediaProjectionManager.getMediaProjection()
.- Описание
Проецируйте контент на неосновной дисплей или внешнее устройство с помощью API
MediaProjection
. Этот контент не обязательно должен быть исключительно медиаконтентом.- Альтернативы
Для потоковой передачи мультимедиа на другое устройство используйте Google Cast SDK .
- Тип службы переднего плана, который нужно объявить в манифесте в разделе
-
android:foregroundServiceType
-
mediaProjection
- Разрешение объявить в своем манифесте
-
FOREGROUND_SERVICE_MEDIA_PROJECTION
- Константа для передачи в
startForeground()
-
FOREGROUND_SERVICE_TYPE_MEDIA_PROJECTION
- Предварительные условия выполнения
Вызовите метод
createScreenCaptureIntent()
перед запуском службы переднего плана. При этом пользователю будет показано уведомление о разрешении; пользователь должен предоставить разрешение, прежде чем вы сможете создать службу.После создания службы переднего плана вы можете вызвать
MediaProjectionManager.getMediaProjection()
.- Описание
Проецируйте контент на неосновной дисплей или внешнее устройство с помощью API
MediaProjection
. Этот контент не обязательно должен быть исключительно медиаконтентом.- Альтернативы
Для потоковой передачи мультимедиа на другое устройство используйте Google Cast SDK .
- Тип службы переднего плана, который нужно объявить в манифесте в разделе
-
android:foregroundServiceType
-
mediaProjection
- Разрешение объявить в вашем манифесте
-
FOREGROUND_SERVICE_MEDIA_PROJECTION
- Константа для передачи в
startForeground()
-
FOREGROUND_SERVICE_TYPE_MEDIA_PROJECTION
- Предварительные условия выполнения
Вызовите метод
createScreenCaptureIntent()
перед запуском службы переднего плана. При этом пользователю будет показано уведомление о разрешении; пользователь должен предоставить разрешение, прежде чем вы сможете создать службу.После создания службы переднего плана вы можете вызвать
MediaProjectionManager.getMediaProjection()
.- Описание
Проецируйте контент на неосновной дисплей или внешнее устройство с помощью API
MediaProjection
. Этот контент не обязательно должен быть исключительно медиаконтентом.- Альтернативы
Для потоковой передачи мультимедиа на другое устройство используйте Google Cast SDK .
Микрофон
- Foreground service type to declare in manifest under
android:foregroundServiceType
microphone
- Permission to declare in your manifest
FOREGROUND_SERVICE_MICROPHONE
- Constant to pass to
startForeground()
FOREGROUND_SERVICE_TYPE_MICROPHONE
- Runtime prerequisites
Request and be granted the
RECORD_AUDIO
runtime permission.- Description
Continue microphone capture from the background, such as voice recorders or communication apps.
Телефонный звонок
- Тип службы переднего плана, который нужно объявить в манифесте в разделе
-
android:foregroundServiceType
-
phoneCall
- Разрешение объявить в своем манифесте
-
FOREGROUND_SERVICE_PHONE_CALL
- Константа для передачи в
startForeground()
-
FOREGROUND_SERVICE_TYPE_PHONE_CALL
- Предварительные условия выполнения
Хотя бы одно из этих условий должно быть истинным:
- Приложение объявило разрешение
MANAGE_OWN_CALLS
в своем файле манифеста.
- Приложение объявило разрешение
- Приложение является приложением дозвона по умолчанию с ролью
ROLE_DIALER
.
- Приложение является приложением дозвона по умолчанию с ролью
- Описание
Продолжите текущий вызов, используя API
ConnectionService
.- Альтернативы
Если вам нужно совершать телефонные, видеозвонки или VoIP-звонки, рассмотрите возможность использования библиотеки
android.telecom
.Рассмотрите возможность использования
CallScreeningService
для проверки вызовов.
- Тип службы переднего плана, который нужно объявить в манифесте в разделе
-
android:foregroundServiceType
-
phoneCall
- Разрешение объявить в своем манифесте
-
FOREGROUND_SERVICE_PHONE_CALL
- Константа для передачи в
startForeground()
-
FOREGROUND_SERVICE_TYPE_PHONE_CALL
- Предварительные условия выполнения
Хотя бы одно из этих условий должно быть истинным:
- Приложение объявило разрешение
MANAGE_OWN_CALLS
в своем файле манифеста.
- Приложение объявило разрешение
- Приложение является приложением дозвона по умолчанию с ролью
ROLE_DIALER
.
- Приложение является приложением дозвона по умолчанию с ролью
- Описание
Продолжите текущий вызов, используя API
ConnectionService
.- Альтернативы
Если вам нужно совершать телефонные, видеозвонки или VoIP-звонки, рассмотрите возможность использования библиотеки
android.telecom
.Рассмотрите возможность использования
CallScreeningService
для проверки вызовов.
Удаленный обмен сообщениями
- Foreground service type to declare in manifest under
android:foregroundServiceType
remoteMessaging
- Permission to declare in your manifest
FOREGROUND_SERVICE_REMOTE_MESSAGING
- Constant to pass to
startForeground()
FOREGROUND_SERVICE_TYPE_REMOTE_MESSAGING
- Runtime prerequisites
- None
- Description
- Transfer text messages from one device to another. Assists with continuity of a user's messaging tasks when they switch devices.
Короткое обслуживание
- Тип службы переднего плана, который нужно объявить в манифесте в разделе
-
android:foregroundServiceType
-
shortService
- Разрешение объявить в вашем манифесте
- Никто
- Константа для передачи в
startForeground()
-
FOREGROUND_SERVICE_TYPE_SHORT_SERVICE
- Предварительные условия выполнения
- Никто
- Описание
Быстро завершайте важную работу, которую нельзя прервать или отложить.
Этот тип имеет ряд уникальных характеристик:
- Может работать только в течение короткого периода времени (около 3 минут).
- Нет поддержки закрепленных служб переднего плана.
- Невозможно запустить другие службы переднего плана.
- Не требует разрешения для конкретного типа , хотя все равно требуется разрешение
FOREGROUND_SERVICE
. -
shortService
может измениться на другой тип службы только в том случае, если приложение в настоящее время имеет право запускать новую службу переднего плана. - Служба переднего плана может изменить свой тип на
shortService
в любое время, после чего начинается период ожидания.
Таймаут для shortService начинается с момента вызова
Service.startForeground()
. Ожидается, что приложение вызоветService.stopSelf()
илиService.stopForeground()
до истечения времени ожидания. В противном случае вызывается новыйService.onTimeout()
, предоставляющий приложениям краткую возможность вызватьstopSelf()
илиstopForeground()
, чтобы остановить службу.Через некоторое время после вызова
Service.onTimeout()
приложение переходит в кэшированное состояние и больше не считается находящимся на переднем плане, если только пользователь не взаимодействует с приложением активно. Через некоторое время после того, как приложение кэшируется и служба не остановлена, приложение получает сообщение ANR . В сообщении ANR упоминаетсяFOREGROUND_SERVICE_TYPE_SHORT_SERVICE
. По этим причинам рекомендуется реализовать обратный вызовService.onTimeout()
.Обратный вызов
Service.onTimeout()
не существует в Android 13 и более ранних версиях. Если та же служба работает на таких устройствах, она не получает тайм-аут и не получает ANR. Убедитесь, что ваша служба останавливается, как только завершает задачу обработки, даже если она еще не получила обратный вызовService.onTimeout()
.Важно отметить, что если время ожидания
shortService
не соблюдается, приложение выдаст ошибку ANR, даже если у него есть другие допустимые службы переднего плана или другие запущенные процессы жизненного цикла приложения.Если приложение видно пользователю или удовлетворяет одному из исключений , позволяющих запускать службы переднего плана из фонового режима, повторный вызов
Service.StartForeground()
с параметромFOREGROUND_SERVICE_TYPE_SHORT_SERVICE
продлевает время ожидания еще на 3 минуты. Если приложение не видно пользователю и не удовлетворяет ни одному из исключений , любая попытка запустить другую службу переднего плана, независимо от типа, вызываетForegroundServiceStartNotAllowedException
.Если пользователь отключает оптимизацию заряда батареи для вашего приложения, на это все равно влияет тайм-аут shortService FGS.
Если вы запускаете службу переднего плана, включающую тип
shortService
и другой тип службы переднего плана, система игнорирует объявление типаshortService
. Однако служба по-прежнему должна соответствовать требованиям других объявленных типов. Дополнительные сведения см. в документации по службам Foreground .
Специальное использование
- Тип службы переднего плана, который нужно объявить в манифесте в разделе
-
android:foregroundServiceType
-
specialUse
- Разрешение объявить в своем манифесте
-
FOREGROUND_SERVICE_SPECIAL_USE
- Константа для передачи в
startForeground()
-
FOREGROUND_SERVICE_TYPE_SPECIAL_USE
- Предварительные требования для выполнения
- Никто
- Описание
Охватывает все допустимые варианты использования служб переднего плана, которые не охватываются другими типами служб переднего плана.
Помимо объявления типа службы переднего плана
FOREGROUND_SERVICE_TYPE_SPECIAL_USE
, разработчики должны объявить варианты использования в манифесте. Для этого они указывают элемент<property>
внутри элемента<service>
. Эти значения и соответствующие варианты использования проверяются, когда вы отправляете свое приложение в консоль Google Play. Предоставленные вами варианты использования представлены в свободной форме, и вы должны обязательно предоставить достаточно информации, чтобы рецензент мог понять, почему вам нужно использовать типspecialUse
.<service android:name="fooService" android:foregroundServiceType="specialUse"> <property android:name="android.app.PROPERTY_SPECIAL_USE_FGS_SUBTYPE" android:value="explanation_for_special_use"/> </service>
Система освобождена
- Тип службы переднего плана, который нужно объявить в манифесте в разделе
-
android:foregroundServiceType
-
systemExempted
- Разрешение объявить в своем манифесте
-
FOREGROUND_SERVICE_SYSTEM_EXEMPTED
- Константа для передачи в
startForeground()
-
FOREGROUND_SERVICE_TYPE_SYSTEM_EXEMPTED
- Предварительные требования для выполнения
- Никто
- Описание
Зарезервировано для системных приложений и конкретных системных интеграций, чтобы продолжать использовать службы переднего плана.
Чтобы использовать этот тип, приложение должно соответствовать хотя бы одному из следующих критериев:
- Устройство находится в состоянии демонстрационного режима
- Приложение является владельцем устройства
- Приложение является владельцем профайлера
- Приложения безопасности с ролью
ROLE_EMERGENCY
- Приложения для администратора устройства
- Приложения, имеющие разрешение
SCHEDULE_EXACT_ALARM
илиUSE_EXACT_ALARM
Приложения VPN (настраиваются с помощью «Настройки» > «Сеть и Интернет» > «VPN» ).
В противном случае объявление этого типа приведет к тому, что система выдаст исключение
ForegroundServiceTypeNotAllowedException
.
Применение политики Google Play для использования типов приоритетных сервисов
Если ваше приложение предназначено для Android 14 или более поздней версии, вам необходимо объявить типы служб переднего плана вашего приложения на странице контента приложения Play Console ( Политика > Контент приложения ). Дополнительную информацию о том, как объявить типы служб переднего плана в Play Console, см. в разделе Общие сведения о службах переднего плана и требованиях к полноэкранному режиму .
, Начиная с Android 14 (уровень API 34), вы должны объявить соответствующий тип службы для каждой службы переднего плана. Это означает, что вы должны объявить тип службы в манифесте вашего приложения, а также запросить соответствующее разрешение службы переднего плана для этого типа (в дополнение к запросу разрешения FOREGROUND_SERVICE
). Кроме того, в зависимости от типа службы переднего плана вам может потребоваться запросить разрешения во время выполнения перед запуском службы.
Камера
- Foreground service type to declare in manifest under
android:foregroundServiceType
camera
- Permission to declare in your manifest
FOREGROUND_SERVICE_CAMERA
- Constant to pass to
startForeground()
FOREGROUND_SERVICE_TYPE_CAMERA
- Runtime prerequisites
Request and be granted the
CAMERA
runtime permission- Description
Continue to access the camera from the background, such as video chat apps that allow for multitasking.
Подключенное устройство
- Foreground service type to declare in manifest under
android:foregroundServiceType
connectedDevice
- Permission to declare in your manifest
FOREGROUND_SERVICE_CONNECTED_DEVICE
- Constant to pass to
startForeground()
FOREGROUND_SERVICE_TYPE_CONNECTED_DEVICE
- Runtime prerequisites
At least one of the following conditions must be true:
Declare at least one of the following permissions in your manifest:
Request and be granted at least one of the following runtime permissions:
- Description
Interactions with external devices that require a Bluetooth, NFC, IR, USB, or network connection.
- Alternatives
If your app needs to do continuous data transfer to an external device, consider using the companion device manager instead. Use the companion device presence API to help your app stay running while the companion device is in range.
If your app needs to scan for bluetooth devices, consider using the Bluetooth scan API instead.
Синхронизация данных
- Foreground service type to declare in manifest under
android:foregroundServiceType
dataSync
- Permission to declare in your manifest
FOREGROUND_SERVICE_DATA_SYNC
- Constant to pass to
startForeground()
FOREGROUND_SERVICE_TYPE_DATA_SYNC
- Runtime prerequisites
- None
- Description
Data transfer operations, such as the following:
- Data upload or download
- Backup-and-restore operations
- Import or export operations
- Fetch data
- Local file processing
- Transfer data between a device and the cloud over a network
- Alternatives
See Alternatives to data sync foreground services for detailed information.
Здоровье
- Тип службы переднего плана, который нужно объявить в манифесте в разделе
-
android:foregroundServiceType
-
health
- Разрешение объявить в своем манифесте
-
FOREGROUND_SERVICE_HEALTH
- Константа для передачи в
startForeground()
-
FOREGROUND_SERVICE_TYPE_HEALTH
- Предварительные требования для выполнения
Хотя бы одно из следующих условий должно быть истинным:
Объявите разрешение
HIGH_SAMPLING_RATE_SENSORS
в своем манифесте.Запросите и получите хотя бы одно из следующих разрешений среды выполнения:
- Описание
Любые длительные сценарии использования для поддержки приложений из категории фитнеса, таких как трекеры тренировок.
Расположение
- Тип службы переднего плана, который нужно объявить в манифесте в разделе
-
android:foregroundServiceType
-
location
- Разрешение объявить в своем манифесте
-
FOREGROUND_SERVICE_LOCATION
- Константа для передачи в
startForeground()
-
FOREGROUND_SERVICE_TYPE_LOCATION
- Предварительные требования для выполнения
У пользователя должны быть включены службы определения местоположения, а приложению должно быть предоставлено хотя бы одно из следующих разрешений во время выполнения:
- Описание
Долгосрочные варианты использования, требующие доступа к местоположению, например навигация и совместное использование местоположения.
- Альтернативы
Если ваше приложение должно запускаться, когда пользователь достигает определенных мест, рассмотрите возможность использования вместо этого API геозон .
СМИ
- Foreground service type to declare in manifest under
android:foregroundServiceType
mediaPlayback
- Permission to declare in your manifest
FOREGROUND_SERVICE_MEDIA_PLAYBACK
- Constant to pass to
startForeground()
FOREGROUND_SERVICE_TYPE_MEDIA_PLAYBACK
- Runtime prerequisites
- None
- Description
Continue audio or video playback from the background. Support Digital Video Recording (DVR) functionality on Android TV.
- Alternatives
If you're showing picture-in-picture video, use Picture-in-Picture mode.
Обработка медиа
- Тип службы переднего плана, который нужно объявить в манифесте в разделе
-
android:foregroundServiceType
-
mediaProcessing
- Разрешение объявить в своем манифесте
-
FOREGROUND_SERVICE_MEDIA_PROCESSING
- Константа для передачи в
startForeground()
-
FOREGROUND_SERVICE_TYPE_MEDIA_PROCESSING
- Предварительные требования для выполнения
- Никто
- Описание
Сервис для выполнения трудоемких операций с медиаресурсами, таких как преобразование мультимедиа в разные форматы. Система позволяет этой службе работать ограниченное время; при нормальных обстоятельствах этот лимит времени будет составлять 6 часов из каждых 24. (Этот лимит является общим для всех служб переднего плана
mediaProcessing
приложения.)Ваше приложение должно вручную остановить службу обработки мультимедиа в следующем сценарии:
- Когда операция перекодирования завершится или достигнет состояния сбоя, вызовите службу
Service.stopForeground()
иService.stopSelf()
чтобы полностью остановить службу.
- Когда операция перекодирования завершится или достигнет состояния сбоя, вызовите службу
Если период тайм-аута достигнут, система вызывает метод службы
Service.onTimeout(int, int)
. В это время у службы есть несколько секунд для вызоваService.stopSelf()
. Если служба не вызываетService.stopSelf()
, произойдет ANR с этим сообщением об ошибке: «Служба переднего плана <fgs_type> не остановилась в течение времени ожидания: <comComponent_name> ».Примечание .
Service.onTimeout(int, int)
недоступен на Android 14 или более ранней версии. На устройствах с этими версиями, если служба обработки мультимедиа достигает периода ожидания, система немедленно кэширует приложение. По этой причине вашему приложению не следует ждать получения уведомления о тайм-ауте. Вместо этого ему следует прекратить работу службы переднего плана или заменить ее на фоновую службу, как только это станет возможным.
Медиа-проекция
- Тип службы переднего плана, который нужно объявить в манифесте в разделе
-
android:foregroundServiceType
-
mediaProjection
- Разрешение объявить в своем манифесте
-
FOREGROUND_SERVICE_MEDIA_PROJECTION
- Константа для передачи в
startForeground()
-
FOREGROUND_SERVICE_TYPE_MEDIA_PROJECTION
- Предварительные условия выполнения
Вызовите метод
createScreenCaptureIntent()
перед запуском службы переднего плана. При этом пользователю будет показано уведомление о разрешении; пользователь должен предоставить разрешение, прежде чем вы сможете создать службу.После создания службы переднего плана вы можете вызвать
MediaProjectionManager.getMediaProjection()
.- Описание
Проецируйте контент на неосновной дисплей или внешнее устройство с помощью API
MediaProjection
. Этот контент не обязательно должен быть исключительно медиаконтентом.- Альтернативы
Для потоковой передачи мультимедиа на другое устройство используйте Google Cast SDK .
- Тип службы переднего плана, который нужно объявить в манифесте в разделе
-
android:foregroundServiceType
-
mediaProjection
- Разрешение объявить в своем манифесте
-
FOREGROUND_SERVICE_MEDIA_PROJECTION
- Константа для передачи в
startForeground()
-
FOREGROUND_SERVICE_TYPE_MEDIA_PROJECTION
- Предварительные условия выполнения
Вызовите метод
createScreenCaptureIntent()
перед запуском службы переднего плана. При этом пользователю будет показано уведомление о разрешении; пользователь должен предоставить разрешение, прежде чем вы сможете создать службу.После создания службы переднего плана вы можете вызвать
MediaProjectionManager.getMediaProjection()
.- Описание
Проецируйте контент на неосновной дисплей или внешнее устройство с помощью API
MediaProjection
. Этот контент не обязательно должен быть исключительно медиаконтентом.- Альтернативы
Для потоковой передачи мультимедиа на другое устройство используйте Google Cast SDK .
- Тип службы переднего плана, который нужно объявить в манифесте в разделе
-
android:foregroundServiceType
-
mediaProjection
- Разрешение объявить в вашем манифесте
-
FOREGROUND_SERVICE_MEDIA_PROJECTION
- Константа для передачи в
startForeground()
-
FOREGROUND_SERVICE_TYPE_MEDIA_PROJECTION
- Предварительные условия выполнения
Вызовите метод
createScreenCaptureIntent()
перед запуском службы переднего плана. При этом пользователю будет показано уведомление о разрешении; пользователь должен предоставить разрешение, прежде чем вы сможете создать службу.После создания службы переднего плана вы можете вызвать
MediaProjectionManager.getMediaProjection()
.- Описание
Проецируйте контент на неосновной дисплей или внешнее устройство с помощью API
MediaProjection
. Этот контент не обязательно должен быть исключительно медиаконтентом.- Альтернативы
Для потоковой передачи мультимедиа на другое устройство используйте Google Cast SDK .
Микрофон
- Foreground service type to declare in manifest under
android:foregroundServiceType
microphone
- Permission to declare in your manifest
FOREGROUND_SERVICE_MICROPHONE
- Constant to pass to
startForeground()
FOREGROUND_SERVICE_TYPE_MICROPHONE
- Runtime prerequisites
Request and be granted the
RECORD_AUDIO
runtime permission.- Description
Continue microphone capture from the background, such as voice recorders or communication apps.
Телефонный звонок
- Тип службы переднего плана, который нужно объявить в манифесте в разделе
-
android:foregroundServiceType
-
phoneCall
- Разрешение объявить в своем манифесте
-
FOREGROUND_SERVICE_PHONE_CALL
- Константа для передачи в
startForeground()
-
FOREGROUND_SERVICE_TYPE_PHONE_CALL
- Предварительные условия выполнения
Хотя бы одно из этих условий должно быть истинным:
- Приложение объявило разрешение
MANAGE_OWN_CALLS
в своем файле манифеста.
- Приложение объявило разрешение
- Приложение является приложением дозвона по умолчанию с ролью
ROLE_DIALER
.
- Приложение является приложением дозвона по умолчанию с ролью
- Описание
Продолжите текущий вызов, используя API
ConnectionService
.- Альтернативы
Если вам нужно совершать телефонные, видеозвонки или VoIP-звонки, рассмотрите возможность использования библиотеки
android.telecom
.Рассмотрите возможность использования
CallScreeningService
для проверки вызовов.
- Тип службы переднего плана, который нужно объявить в манифесте в разделе
-
android:foregroundServiceType
-
phoneCall
- Разрешение объявить в своем манифесте
-
FOREGROUND_SERVICE_PHONE_CALL
- Константа для передачи в
startForeground()
-
FOREGROUND_SERVICE_TYPE_PHONE_CALL
- Предварительные условия выполнения
Хотя бы одно из этих условий должно быть истинным:
- Приложение объявило разрешение
MANAGE_OWN_CALLS
в своем файле манифеста.
- Приложение объявило разрешение
- Приложение является приложением дозвона по умолчанию с ролью
ROLE_DIALER
.
- Приложение является приложением дозвона по умолчанию с ролью
- Описание
Продолжите текущий вызов, используя API
ConnectionService
.- Альтернативы
Если вам нужно совершать телефонные, видеозвонки или VoIP-звонки, рассмотрите возможность использования библиотеки
android.telecom
.Рассмотрите возможность использования
CallScreeningService
для проверки вызовов.
Удаленный обмен сообщениями
- Foreground service type to declare in manifest under
android:foregroundServiceType
remoteMessaging
- Permission to declare in your manifest
FOREGROUND_SERVICE_REMOTE_MESSAGING
- Constant to pass to
startForeground()
FOREGROUND_SERVICE_TYPE_REMOTE_MESSAGING
- Runtime prerequisites
- None
- Description
- Transfer text messages from one device to another. Assists with continuity of a user's messaging tasks when they switch devices.
Короткое обслуживание
- Тип службы переднего плана, который нужно объявить в манифесте в разделе
-
android:foregroundServiceType
-
shortService
- Разрешение объявить в вашем манифесте
- Никто
- Константа для передачи в
startForeground()
-
FOREGROUND_SERVICE_TYPE_SHORT_SERVICE
- Предварительные условия выполнения
- Никто
- Описание
Быстро завершайте важную работу, которую нельзя прервать или отложить.
Этот тип имеет ряд уникальных характеристик:
- Может работать только в течение короткого периода времени (около 3 минут).
- Нет поддержки закрепленных служб переднего плана.
- Невозможно запустить другие службы переднего плана.
- Не требует разрешения для конкретного типа , хотя все равно требуется разрешение
FOREGROUND_SERVICE
. -
shortService
может измениться на другой тип службы только в том случае, если приложение в настоящее время имеет право запускать новую службу переднего плана. - Служба переднего плана может изменить свой тип на
shortService
в любое время, после чего начинается период ожидания.
Таймаут для shortService начинается с момента вызова
Service.startForeground()
. Ожидается, что приложение вызоветService.stopSelf()
илиService.stopForeground()
до истечения времени ожидания. В противном случае вызывается новыйService.onTimeout()
, предоставляющий приложениям краткую возможность вызватьstopSelf()
илиstopForeground()
, чтобы остановить службу.Через некоторое время после вызова
Service.onTimeout()
приложение переходит в кэшированное состояние и больше не считается находящимся на переднем плане, если только пользователь не взаимодействует с приложением активно. Через некоторое время после того, как приложение кэшируется и служба не остановлена, приложение получает сообщение ANR . В сообщении ANR упоминаетсяFOREGROUND_SERVICE_TYPE_SHORT_SERVICE
. По этим причинам рекомендуется реализовать обратный вызовService.onTimeout()
.Обратный вызов
Service.onTimeout()
не существует в Android 13 и более ранних версиях. Если та же служба работает на таких устройствах, она не получает тайм-аут и не получает ANR. Убедитесь, что ваша служба останавливается, как только завершает задачу обработки, даже если она еще не получила обратный вызовService.onTimeout()
.Важно отметить, что если время ожидания
shortService
не соблюдается, приложение выдаст ошибку ANR, даже если у него есть другие допустимые службы переднего плана или другие запущенные процессы жизненного цикла приложения.Если приложение видно пользователю или удовлетворяет одному из исключений , позволяющих запускать службы переднего плана из фонового режима, повторный вызов
Service.StartForeground()
с параметромFOREGROUND_SERVICE_TYPE_SHORT_SERVICE
продлевает время ожидания еще на 3 минуты. Если приложение не видно пользователю и не удовлетворяет ни одному из исключений , любая попытка запустить другую службу переднего плана, независимо от типа, вызываетForegroundServiceStartNotAllowedException
.Если пользователь отключает оптимизацию заряда батареи для вашего приложения, на это все равно влияет тайм-аут shortService FGS.
Если вы запускаете службу переднего плана, включающую тип
shortService
и другой тип службы переднего плана, система игнорирует объявление типаshortService
. Однако служба по-прежнему должна соответствовать требованиям других объявленных типов. Дополнительные сведения см. в документации по службам Foreground .
Специальное использование
- Тип службы переднего плана, который нужно объявить в манифесте в разделе
-
android:foregroundServiceType
-
specialUse
- Разрешение объявить в своем манифесте
-
FOREGROUND_SERVICE_SPECIAL_USE
- Константа для передачи в
startForeground()
-
FOREGROUND_SERVICE_TYPE_SPECIAL_USE
- Предварительные требования для выполнения
- Никто
- Описание
Охватывает все допустимые варианты использования служб переднего плана, которые не охватываются другими типами служб переднего плана.
Помимо объявления типа службы переднего плана
FOREGROUND_SERVICE_TYPE_SPECIAL_USE
, разработчики должны объявить варианты использования в манифесте. Для этого они указывают элемент<property>
внутри элемента<service>
. Эти значения и соответствующие варианты использования проверяются, когда вы отправляете свое приложение в консоль Google Play. Предоставленные вами варианты использования представлены в свободной форме, и вы должны обязательно предоставить достаточно информации, чтобы рецензент мог понять, почему вам нужно использовать типspecialUse
.<service android:name="fooService" android:foregroundServiceType="specialUse"> <property android:name="android.app.PROPERTY_SPECIAL_USE_FGS_SUBTYPE" android:value="explanation_for_special_use"/> </service>
Система освобождена
- Тип службы переднего плана, который нужно объявить в манифесте в разделе
-
android:foregroundServiceType
-
systemExempted
- Разрешение объявить в своем манифесте
-
FOREGROUND_SERVICE_SYSTEM_EXEMPTED
- Константа для передачи в
startForeground()
-
FOREGROUND_SERVICE_TYPE_SYSTEM_EXEMPTED
- Предварительные требования для выполнения
- Никто
- Описание
Зарезервировано для системных приложений и конкретных системных интеграций, чтобы продолжать использовать службы переднего плана.
Чтобы использовать этот тип, приложение должно соответствовать хотя бы одному из следующих критериев:
- Устройство находится в состоянии демонстрационного режима
- Приложение является владельцем устройства
- Приложение является владельцем профайлера
- Приложения безопасности с ролью
ROLE_EMERGENCY
- Приложения для администратора устройства
- Приложения, имеющие разрешение
SCHEDULE_EXACT_ALARM
илиUSE_EXACT_ALARM
Приложения VPN (настраиваются с помощью «Настройки» > «Сеть и Интернет» > «VPN» ).
В противном случае объявление этого типа приведет к тому, что система выдаст исключение
ForegroundServiceTypeNotAllowedException
.
Применение политики Google Play для использования типов приоритетных сервисов
Если ваше приложение предназначено для Android 14 или более поздней версии, вам необходимо объявить типы служб переднего плана вашего приложения на странице контента приложения Play Console ( Политика > Контент приложения ). Дополнительную информацию о том, как объявить типы служб переднего плана в Play Console, см. в разделе Общие сведения о службах переднего плана и требованиях к полноэкранному режиму .
, Начиная с Android 14 (уровень API 34), вы должны объявить соответствующий тип службы для каждой службы переднего плана. Это означает, что вы должны объявить тип службы в манифесте вашего приложения, а также запросить соответствующее разрешение службы переднего плана для этого типа (в дополнение к запросу разрешения FOREGROUND_SERVICE
). Кроме того, в зависимости от типа службы переднего плана вам может потребоваться запросить разрешения во время выполнения перед запуском службы.
Камера
- Foreground service type to declare in manifest under
android:foregroundServiceType
camera
- Permission to declare in your manifest
FOREGROUND_SERVICE_CAMERA
- Constant to pass to
startForeground()
FOREGROUND_SERVICE_TYPE_CAMERA
- Runtime prerequisites
Request and be granted the
CAMERA
runtime permission- Description
Continue to access the camera from the background, such as video chat apps that allow for multitasking.
Подключенное устройство
- Foreground service type to declare in manifest under
android:foregroundServiceType
connectedDevice
- Permission to declare in your manifest
FOREGROUND_SERVICE_CONNECTED_DEVICE
- Constant to pass to
startForeground()
FOREGROUND_SERVICE_TYPE_CONNECTED_DEVICE
- Runtime prerequisites
At least one of the following conditions must be true:
Declare at least one of the following permissions in your manifest:
Request and be granted at least one of the following runtime permissions:
- Description
Interactions with external devices that require a Bluetooth, NFC, IR, USB, or network connection.
- Alternatives
If your app needs to do continuous data transfer to an external device, consider using the companion device manager instead. Use the companion device presence API to help your app stay running while the companion device is in range.
If your app needs to scan for bluetooth devices, consider using the Bluetooth scan API instead.
Синхронизация данных
- Foreground service type to declare in manifest under
android:foregroundServiceType
dataSync
- Permission to declare in your manifest
FOREGROUND_SERVICE_DATA_SYNC
- Constant to pass to
startForeground()
FOREGROUND_SERVICE_TYPE_DATA_SYNC
- Runtime prerequisites
- None
- Description
Data transfer operations, such as the following:
- Data upload or download
- Backup-and-restore operations
- Import or export operations
- Fetch data
- Local file processing
- Transfer data between a device and the cloud over a network
- Alternatives
See Alternatives to data sync foreground services for detailed information.
Здоровье
- Тип службы переднего плана, который нужно объявить в манифесте в разделе
-
android:foregroundServiceType
-
health
- Разрешение объявить в своем манифесте
-
FOREGROUND_SERVICE_HEALTH
- Константа для передачи в
startForeground()
-
FOREGROUND_SERVICE_TYPE_HEALTH
- Предварительные требования для выполнения
Хотя бы одно из следующих условий должно быть истинным:
Объявите разрешение
HIGH_SAMPLING_RATE_SENSORS
в своем манифесте.Запросите и получите хотя бы одно из следующих разрешений среды выполнения:
- Описание
Любые длительные сценарии использования для поддержки приложений из категории фитнеса, таких как трекеры тренировок.
Расположение
- Тип службы переднего плана, который нужно объявить в манифесте в разделе
-
android:foregroundServiceType
-
location
- Разрешение объявить в своем манифесте
-
FOREGROUND_SERVICE_LOCATION
- Константа для передачи в
startForeground()
-
FOREGROUND_SERVICE_TYPE_LOCATION
- Предварительные требования для выполнения
У пользователя должны быть включены службы определения местоположения, а приложению должно быть предоставлено хотя бы одно из следующих разрешений во время выполнения:
- Описание
Долгосрочные варианты использования, требующие доступа к местоположению, например навигация и совместное использование местоположения.
- Альтернативы
Если ваше приложение должно запускаться, когда пользователь достигает определенных мест, рассмотрите возможность использования вместо этого API геозон .
СМИ
- Foreground service type to declare in manifest under
android:foregroundServiceType
mediaPlayback
- Permission to declare in your manifest
FOREGROUND_SERVICE_MEDIA_PLAYBACK
- Constant to pass to
startForeground()
FOREGROUND_SERVICE_TYPE_MEDIA_PLAYBACK
- Runtime prerequisites
- None
- Description
Continue audio or video playback from the background. Support Digital Video Recording (DVR) functionality on Android TV.
- Alternatives
If you're showing picture-in-picture video, use Picture-in-Picture mode.
Обработка медиа
- Тип службы переднего плана, который нужно объявить в манифесте в разделе
-
android:foregroundServiceType
-
mediaProcessing
- Разрешение объявить в своем манифесте
-
FOREGROUND_SERVICE_MEDIA_PROCESSING
- Константа для передачи в
startForeground()
-
FOREGROUND_SERVICE_TYPE_MEDIA_PROCESSING
- Предварительные требования для выполнения
- Никто
- Описание
Сервис для выполнения трудоемких операций с медиаресурсами, таких как преобразование мультимедиа в разные форматы. Система позволяет этой службе работать ограниченное время; при нормальных обстоятельствах этот лимит времени будет составлять 6 часов из каждых 24. (Этот лимит является общим для всех служб переднего плана
mediaProcessing
приложения.)Ваше приложение должно вручную остановить службу обработки мультимедиа в следующем сценарии:
- Когда операция перекодирования завершится или достигнет состояния сбоя, вызовите службу
Service.stopForeground()
иService.stopSelf()
чтобы полностью остановить службу.
- Когда операция перекодирования завершится или достигнет состояния сбоя, вызовите службу
Если период тайм-аута достигнут, система вызывает метод службы
Service.onTimeout(int, int)
. В это время у службы есть несколько секунд для вызоваService.stopSelf()
. Если служба не вызываетService.stopSelf()
, произойдет ANR с этим сообщением об ошибке: «Служба переднего плана <fgs_type> не остановилась в течение времени ожидания: <comComponent_name> ».Примечание .
Service.onTimeout(int, int)
недоступен на Android 14 или более ранней версии. На устройствах с этими версиями, если служба обработки мультимедиа достигает периода ожидания, система немедленно кэширует приложение. По этой причине вашему приложению не следует ждать получения уведомления о тайм-ауте. Вместо этого ему следует прекратить работу службы переднего плана или заменить ее на фоновую службу, как только это станет возможным.
Медиа-проекция
- Тип службы переднего плана, который нужно объявить в манифесте в разделе
-
android:foregroundServiceType
-
mediaProjection
- Разрешение объявить в своем манифесте
-
FOREGROUND_SERVICE_MEDIA_PROJECTION
- Константа для передачи в
startForeground()
-
FOREGROUND_SERVICE_TYPE_MEDIA_PROJECTION
- Предварительные условия выполнения
Вызовите метод
createScreenCaptureIntent()
перед запуском службы переднего плана. При этом пользователю будет показано уведомление о разрешении; пользователь должен предоставить разрешение, прежде чем вы сможете создать службу.После создания службы переднего плана вы можете вызвать
MediaProjectionManager.getMediaProjection()
.- Описание
Проецируйте контент на неосновной дисплей или внешнее устройство с помощью API
MediaProjection
. Этот контент не обязательно должен быть исключительно медиаконтентом.- Альтернативы
Для потоковой передачи мультимедиа на другое устройство используйте Google Cast SDK .
- Тип службы переднего плана, который нужно объявить в манифесте в разделе
-
android:foregroundServiceType
-
mediaProjection
- Разрешение объявить в своем манифесте
-
FOREGROUND_SERVICE_MEDIA_PROJECTION
- Константа для передачи в
startForeground()
-
FOREGROUND_SERVICE_TYPE_MEDIA_PROJECTION
- Предварительные условия выполнения
Вызовите метод
createScreenCaptureIntent()
перед запуском службы переднего плана. При этом пользователю будет показано уведомление о разрешении; пользователь должен предоставить разрешение, прежде чем вы сможете создать службу.После создания службы переднего плана вы можете вызвать
MediaProjectionManager.getMediaProjection()
.- Описание
Проецируйте контент на неосновной дисплей или внешнее устройство с помощью API
MediaProjection
. Этот контент не обязательно должен быть исключительно медиаконтентом.- Альтернативы
Для потоковой передачи мультимедиа на другое устройство используйте Google Cast SDK .
- Тип службы переднего плана, который нужно объявить в манифесте в разделе
-
android:foregroundServiceType
-
mediaProjection
- Разрешение объявить в вашем манифесте
-
FOREGROUND_SERVICE_MEDIA_PROJECTION
- Константа для передачи в
startForeground()
-
FOREGROUND_SERVICE_TYPE_MEDIA_PROJECTION
- Предварительные условия выполнения
Вызовите метод
createScreenCaptureIntent()
перед запуском службы переднего плана. При этом пользователю будет показано уведомление о разрешении; пользователь должен предоставить разрешение, прежде чем вы сможете создать службу.После создания службы переднего плана вы можете вызвать
MediaProjectionManager.getMediaProjection()
.- Описание
Проецируйте контент на неосновной дисплей или внешнее устройство с помощью API
MediaProjection
. Этот контент не обязательно должен быть исключительно медиаконтентом.- Альтернативы
Для потоковой передачи мультимедиа на другое устройство используйте Google Cast SDK .
Микрофон
- Foreground service type to declare in manifest under
android:foregroundServiceType
microphone
- Permission to declare in your manifest
FOREGROUND_SERVICE_MICROPHONE
- Constant to pass to
startForeground()
FOREGROUND_SERVICE_TYPE_MICROPHONE
- Runtime prerequisites
Request and be granted the
RECORD_AUDIO
runtime permission.- Description
Continue microphone capture from the background, such as voice recorders or communication apps.
Телефонный звонок
- Тип службы переднего плана, который нужно объявить в манифесте в разделе
-
android:foregroundServiceType
-
phoneCall
- Разрешение объявить в своем манифесте
-
FOREGROUND_SERVICE_PHONE_CALL
- Константа для передачи в
startForeground()
-
FOREGROUND_SERVICE_TYPE_PHONE_CALL
- Предварительные условия выполнения
Хотя бы одно из этих условий должно быть истинным:
- Приложение объявило разрешение
MANAGE_OWN_CALLS
в своем файле манифеста.
- Приложение объявило разрешение
- Приложение является приложением дозвона по умолчанию с ролью
ROLE_DIALER
.
- Приложение является приложением дозвона по умолчанию с ролью
- Описание
Продолжите текущий вызов, используя API
ConnectionService
.- Альтернативы
Если вам нужно совершать телефонные, видеозвонки или VoIP-звонки, рассмотрите возможность использования библиотеки
android.telecom
.Рассмотрите возможность использования
CallScreeningService
для проверки вызовов.
- Тип службы переднего плана, который нужно объявить в манифесте в разделе
-
android:foregroundServiceType
-
phoneCall
- Разрешение объявить в своем манифесте
-
FOREGROUND_SERVICE_PHONE_CALL
- Константа для передачи в
startForeground()
-
FOREGROUND_SERVICE_TYPE_PHONE_CALL
- Предварительные условия выполнения
Хотя бы одно из этих условий должно быть истинным:
- Приложение объявило разрешение
MANAGE_OWN_CALLS
в своем файле манифеста.
- Приложение объявило разрешение
- Приложение является приложением дозвона по умолчанию с ролью
ROLE_DIALER
.
- Приложение является приложением дозвона по умолчанию с ролью
- Описание
Продолжите текущий вызов, используя API
ConnectionService
.- Альтернативы
Если вам нужно совершать телефонные, видеозвонки или VoIP-звонки, рассмотрите возможность использования библиотеки
android.telecom
.Рассмотрите возможность использования
CallScreeningService
для проверки вызовов.
Удаленный обмен сообщениями
- Foreground service type to declare in manifest under
android:foregroundServiceType
remoteMessaging
- Permission to declare in your manifest
FOREGROUND_SERVICE_REMOTE_MESSAGING
- Constant to pass to
startForeground()
FOREGROUND_SERVICE_TYPE_REMOTE_MESSAGING
- Runtime prerequisites
- None
- Description
- Transfer text messages from one device to another. Assists with continuity of a user's messaging tasks when they switch devices.
Короткое обслуживание
- Тип службы переднего плана, который нужно объявить в манифесте в разделе
-
android:foregroundServiceType
-
shortService
- Разрешение объявить в вашем манифесте
- Никто
- Константа для передачи в
startForeground()
-
FOREGROUND_SERVICE_TYPE_SHORT_SERVICE
- Предварительные условия выполнения
- Никто
- Описание
Быстро завершайте важную работу, которую нельзя прервать или отложить.
Этот тип имеет ряд уникальных характеристик:
- Может работать только в течение короткого периода времени (около 3 минут).
- Нет поддержки закрепленных служб переднего плана.
- Невозможно запустить другие службы переднего плана.
- Не требует разрешения для конкретного типа , хотя все равно требуется разрешение
FOREGROUND_SERVICE
. -
shortService
может измениться на другой тип службы только в том случае, если приложение в настоящее время имеет право запускать новую службу переднего плана. - Служба переднего плана может изменить свой тип на
shortService
в любое время, после чего начинается период ожидания.
Таймаут для shortService начинается с момента вызова
Service.startForeground()
. Ожидается, что приложение вызоветService.stopSelf()
илиService.stopForeground()
до истечения времени ожидания. В противном случае вызывается новыйService.onTimeout()
, предоставляющий приложениям краткую возможность вызватьstopSelf()
илиstopForeground()
, чтобы остановить службу.Через некоторое время после вызова
Service.onTimeout()
приложение переходит в кэшированное состояние и больше не считается находящимся на переднем плане, если только пользователь не взаимодействует с приложением активно. Через некоторое время после того, как приложение кэшируется и служба не остановлена, приложение получает сообщение ANR . В сообщении ANR упоминаетсяFOREGROUND_SERVICE_TYPE_SHORT_SERVICE
. По этим причинам рекомендуется реализовать обратный вызовService.onTimeout()
.Обратный вызов
Service.onTimeout()
не существует в Android 13 и более ранних версиях. Если та же служба работает на таких устройствах, она не получает тайм-аут и не получает ANR. Убедитесь, что ваша служба останавливается, как только завершает задачу обработки, даже если она еще не получила обратный вызовService.onTimeout()
.Важно отметить, что если время ожидания
shortService
не соблюдается, приложение выдаст ошибку ANR, даже если у него есть другие допустимые службы переднего плана или другие запущенные процессы жизненного цикла приложения.Если приложение видно пользователю или удовлетворяет одному из исключений , позволяющих запускать службы переднего плана из фонового режима, повторный вызов
Service.StartForeground()
с параметромFOREGROUND_SERVICE_TYPE_SHORT_SERVICE
продлевает время ожидания еще на 3 минуты. Если приложение не видно пользователю и не удовлетворяет ни одному из исключений , любая попытка запустить другую службу переднего плана, независимо от типа, вызываетForegroundServiceStartNotAllowedException
.Если пользователь отключает оптимизацию заряда батареи для вашего приложения, на это все равно влияет тайм-аут shortService FGS.
Если вы запускаете службу переднего плана, включающую тип
shortService
и другой тип службы переднего плана, система игнорирует объявление типаshortService
. Однако служба по-прежнему должна соответствовать требованиям других объявленных типов. Дополнительные сведения см. в документации по службам Foreground .
Специальное использование
- Тип службы переднего плана, который нужно объявить в манифесте в разделе
-
android:foregroundServiceType
-
specialUse
- Разрешение объявить в своем манифесте
-
FOREGROUND_SERVICE_SPECIAL_USE
- Константа для передачи в
startForeground()
-
FOREGROUND_SERVICE_TYPE_SPECIAL_USE
- Предварительные требования для выполнения
- Никто
- Описание
Охватывает все допустимые варианты использования служб переднего плана, которые не охватываются другими типами служб переднего плана.
Помимо объявления типа службы переднего плана
FOREGROUND_SERVICE_TYPE_SPECIAL_USE
, разработчики должны объявить варианты использования в манифесте. Для этого они указывают элемент<property>
внутри элемента<service>
. Эти значения и соответствующие варианты использования проверяются, когда вы отправляете свое приложение в консоль Google Play. Предоставленные вами варианты использования представлены в свободной форме, и вы должны обязательно предоставить достаточно информации, чтобы рецензент мог понять, почему вам нужно использовать типspecialUse
.<service android:name="fooService" android:foregroundServiceType="specialUse"> <property android:name="android.app.PROPERTY_SPECIAL_USE_FGS_SUBTYPE" android:value="explanation_for_special_use"/> </service>
Система освобождена
- Тип службы переднего плана, который нужно объявить в манифесте в разделе
-
android:foregroundServiceType
-
systemExempted
- Разрешение объявить в своем манифесте
-
FOREGROUND_SERVICE_SYSTEM_EXEMPTED
- Константа для передачи в
startForeground()
-
FOREGROUND_SERVICE_TYPE_SYSTEM_EXEMPTED
- Предварительные требования для выполнения
- Никто
- Описание
Зарезервировано для системных приложений и конкретных системных интеграций, чтобы продолжать использовать службы переднего плана.
Чтобы использовать этот тип, приложение должно соответствовать хотя бы одному из следующих критериев:
- Устройство находится в состоянии демонстрационного режима
- Приложение является владельцем устройства
- Приложение является владельцем профайлера
- Приложения безопасности с ролью
ROLE_EMERGENCY
- Приложения для администратора устройства
- Приложения, имеющие разрешение
SCHEDULE_EXACT_ALARM
илиUSE_EXACT_ALARM
Приложения VPN (настраиваются с помощью «Настройки» > «Сеть и Интернет» > «VPN» ).
В противном случае объявление этого типа приведет к тому, что система выдаст исключение
ForegroundServiceTypeNotAllowedException
.
Применение политики Google Play для использования типов приоритетных сервисов
Если ваше приложение предназначено для Android 14 или более поздней версии, вам необходимо объявить типы служб переднего плана вашего приложения на странице контента приложения Play Console ( Политика > Контент приложения ). Дополнительную информацию о том, как объявить типы служб переднего плана в Play Console, см. в разделе Общие сведения о службах переднего плана и требованиях к полноэкранному режиму .