- синтаксис:
<service android:description="string resource" android:directBootAware=["true" | "false"] android:enabled=["true" | "false"] android:exported=["true" | "false"] android:foregroundServiceType=["camera" | "connectedDevice" | "dataSync" | "health" | "location" | "mediaPlayback" | "mediaProjection" | "microphone" | "phoneCall" | "remoteMessaging" | "shortService" | "specialUse" | "systemExempted"] android:icon="drawable resource" android:isolatedProcess=["true" | "false"] android:label="string resource" android:name="string" android:permission="string" android:process="string" > ... </service>
- содержится в:
-
<application>
- может содержать:
-
<intent-filter>
<meta-data>
- описание:
- Объявляет службу, подкласс
Service
, как один из компонентов приложения. В отличие от активностей, сервисам не хватает визуального пользовательского интерфейса. Они используются для реализации длительных фоновых операций или многофункционального коммуникационного API, который может вызываться другими приложениями.Все службы должны быть представлены элементами
<service>
в файле манифеста. Все, что там не объявлено, не видятся системой и никогда не запускаются.Примечание. В Android 8.0 (уровень API 26) и более поздних версиях система ограничивает возможности вашего приложения, пока оно работает в фоновом режиме. Дополнительные сведения см. в руководствах, в которых обсуждаются ограничения фонового выполнения и ограничения фонового местоположения .
- атрибуты:
-
android:description
- Читаемая пользователем строка, описывающая службу. Описание задается как ссылка на строковый ресурс, поэтому его можно локализовать, как и другие строки в пользовательском интерфейсе.
-
android:directBootAware
Поддерживает ли служба Direct-Boot , то есть может ли она работать до того, как пользователь разблокирует устройство.
Примечание. Во время прямой загрузки служба вашего приложения может получить доступ только к тем данным, которые хранятся в защищенном хранилище устройства .
Значение по умолчанию —
"false"
.-
android:enabled
- Может ли система создать экземпляр службы. Это
"true"
если это возможно, и"false"
если нет. Значение по умолчанию —"true"
.Элемент
<application>
имеет собственный атрибутenabled
, который применяется ко всем компонентам приложения, включая службы. Чтобы служба была включена, атрибуты<application>
и<service>
должны иметь значение"true"
, как и по умолчанию. Если любой из них имеет значение"false"
, служба отключена и не может быть создана. -
android:exported
- Могут ли компоненты других приложений вызывать службу или взаимодействовать с ней. Это
"true"
если они могут, и"false"
если нет. Если значение равно"false"
, только компоненты одного и того же приложения или приложений с одним и тем же идентификатором пользователя могут запускать службу или привязываться к ней.Значение по умолчанию зависит от того, содержит ли служба фильтры намерений. Отсутствие каких-либо фильтров означает, что его можно вызвать, только указав точное имя класса. Это означает, что служба предназначена только для использования внутри приложения, поскольку другие не знают имени класса. Итак, в этом случае значение по умолчанию —
"false"
. С другой стороны, наличие хотя бы одного фильтра подразумевает, что сервис предназначен для внешнего использования, поэтому значение по умолчанию —"true"
.Этот атрибут — не единственный способ ограничить доступность службы для других приложений. Вы также можете использовать разрешение, чтобы ограничить внешние объекты, которые могут взаимодействовать со службой. См. атрибут
permission
. -
android:foregroundServiceType
Указывает, что служба является службой приоритетного плана , удовлетворяющей конкретному варианту использования. Например, тип службы приоритета
"location"
указывает, что приложение получает текущее местоположение устройства, обычно для продолжения инициированного пользователем действия, связанного с местоположением устройства.Вы можете назначить несколько типов приоритетных служб для определенной службы.
-
android:icon
- Значок, представляющий службу. Этот атрибут устанавливается как ссылка на ресурс, который можно рисовать, содержащий определение изображения. Если он не установлен, вместо него используется значок, указанный для приложения в целом. См. атрибут
icon
элемента<application>
.Значок службы, заданный здесь или элементом
<application>
, также является значком по умолчанию для всех фильтров намерений службы. См. атрибутicon
элемента<intent-filter>
. -
android:isolatedProcess
- Если установлено значение
"true"
, эта служба запускается в рамках специального процесса, изолированного от остальной части системы и не имеющего собственных разрешений. Единственная связь с ним осуществляется через Service API с привязкой и запуском. -
android:label
- Читаемое пользователем имя службы. Если этот атрибут не установлен, вместо него используется метка, установленная для приложения в целом. См. атрибут
label
элемента<application>
.Метка службы, заданная здесь или элементом
<application>
, также является меткой по умолчанию для всех фильтров намерений службы. См. атрибутlabel
элемента<intent-filter>
.Метка задается как ссылка на строковый ресурс, поэтому ее можно локализовать, как и другие строки в пользовательском интерфейсе. Однако для удобства при разработке приложения его также можно задать как необработанную строку.
-
android:name
- Имя подкласса
Service
, реализующего службу. Это полное имя класса, например"com.example.project.RoomService"
. Однако в качестве сокращения, если первым символом имени является точка, например".RoomService"
, она добавляется к имени пакета, указанному в элементе<manifest>
.После публикации приложения не меняйте это имя , если только вы не установили
android:exported ="false"
.По умолчанию нет. Имя должно быть указано.
-
android:permission
- Имя разрешения, которое необходимо сущности для запуска службы или привязки к ней. Если вызывающему объекту
startService()
,bindService()
илиstopService()
не предоставлено это разрешение, метод не работает и объектIntent
не доставляется в службу.Если этот атрибут не установлен, к службе применяются разрешения, установленные атрибутом
permission
элемента<application>
. Если ни один из атрибутов не установлен, служба не защищена разрешением.Дополнительные сведения о разрешениях см. в разделе «Разрешения» в обзоре манифеста приложения и в рекомендациях по безопасности .
-
android:process
- Имя процесса, в котором запускается служба. Обычно все компоненты приложения выполняются в процессе по умолчанию, созданном для приложения. Он имеет то же имя, что и пакет приложения. Атрибут
process
элемента<application>
может устанавливать разные значения по умолчанию для всех компонентов. Но компонент может переопределить значение по умолчанию с помощью собственного атрибутаprocess
, что позволит вам распределить приложение по нескольким процессам.Если имя, присвоенное этому атрибуту, начинается с двоеточия (
:
), при необходимости создается новый процесс, частный для приложения, и служба запускается в этом процессе.Если имя процесса начинается с символа нижнего регистра, служба запускается в глобальном процессе с таким именем, при условии, что у нее есть на это разрешение. Это позволяет компонентам разных приложений совместно использовать процесс, сокращая использование ресурсов.
-
- см. также:
-
<application>
<activity>
- представлено в:
- API уровня 1
Контент и образцы кода на этой странице предоставлены по лицензиям. Java и OpenJDK – это зарегистрированные товарные знаки корпорации Oracle и ее аффилированных лиц.
Последнее обновление: 2024-10-31 UTC.
[[["Прост для понимания","easyToUnderstand","thumb-up"],["Помог мне решить мою проблему","solvedMyProblem","thumb-up"],["Другое","otherUp","thumb-up"]],[["Отсутствует нужная мне информация","missingTheInformationINeed","thumb-down"],["Слишком сложен/слишком много шагов","tooComplicatedTooManySteps","thumb-down"],["Устарел","outOfDate","thumb-down"],["Проблема с переводом текста","translationIssue","thumb-down"],["Проблемы образцов/кода","samplesCodeIssue","thumb-down"],["Другое","otherDown","thumb-down"]],["Последнее обновление: 2024-10-31 UTC."],[],[]]