<Dienst>

Syntax:
<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>
enthalten in:
<application>
kann Folgendes enthalten:
<intent-filter>
<meta-data>
description:
Deklariert einen Dienst, also eine abgeleitete Service-Klasse, als eine der Komponenten der Anwendung. Im Gegensatz zu Aktivitäten fehlt es Diensten eine visuelle Benutzeroberfläche. Sie werden verwendet, um lang andauernde Hintergrundvorgänge oder eine umfassende Kommunikations-API zu implementieren, die von anderen Anwendungen aufgerufen werden kann.

Alle Dienste müssen in der Manifestdatei durch <service>-Elemente dargestellt werden. Nicht deklarierte Elemente werden vom System nicht erkannt und nie ausgeführt.

Hinweis: Unter Android 8.0 (API-Level 26) und höher wird durch das System eingeschränkt, was deine App tun kann, während sie im Hintergrund ausgeführt wird. Weitere Informationen finden Sie in den Leitfäden zu den Limits für die Ausführung im Hintergrund und den Limits für die Standortermittlung im Hintergrund.

Attribute:
android:description
Ein für Nutzer lesbarer String, der den Dienst beschreibt. Die Beschreibung wird als Verweis auf eine String-Ressource festgelegt, sodass sie wie andere Strings in der Benutzeroberfläche lokalisiert werden kann.
android:directBootAware

Gibt an, ob der Dienst Direct-Boot-bewusst ist, d. h. ob er ausgeführt werden kann, bevor der Nutzer das Gerät entsperrt.

Hinweis : Während des direkten Starts kann ein Dienst in Ihrer Anwendung nur auf die Daten zugreifen, die im gerätegeschützten Speicher gespeichert sind.

Der Standardwert ist "false".

android:enabled
Gibt an, ob der Dienst vom System instanziiert werden kann. Es ist "true", wenn dies möglich ist, und "false", wenn nicht. Der Standardwert ist "true".

Das <application>-Element hat ein eigenes enabled-Attribut, das für alle Anwendungskomponenten, einschließlich Dienste, gilt. Die Attribute <application> und <service> müssen beide standardmäßig "true" sein, damit der Dienst aktiviert wird. Wenn einer der beiden Werte "false" ist, ist der Dienst deaktiviert und kann nicht instanziiert werden.

android:exported
Gibt an, ob Komponenten anderer Anwendungen den Dienst aufrufen oder mit ihm interagieren können. Es ist "true", wenn dies möglich ist, und andernfalls "false". Wenn der Wert "false" ist, können nur Komponenten derselben Anwendung oder Anwendungen mit derselben Nutzer-ID den Dienst starten oder an ihn binden.

Der Standardwert hängt davon ab, ob der Dienst Intent-Filter enthält. Wenn kein Filter vorhanden ist, kann er nur durch Angabe des genauen Klassennamens aufgerufen werden. Dies impliziert, dass der Dienst nur für die anwendungsinterne Verwendung bestimmt ist, da andere den Klassennamen nicht kennen. In diesem Fall ist der Standardwert "false". Andererseits bedeutet das Vorhandensein eines Filters, dass der Dienst für die externe Verwendung vorgesehen ist, sodass der Standardwert "true" ist.

Dieses Attribut ist nicht die einzige Möglichkeit, die Verfügbarkeit eines Dienstes für andere Anwendungen zu begrenzen. Sie können auch eine Berechtigung verwenden, um die externen Entitäten einzuschränken, die mit dem Dienst interagieren können. Siehe Attribut permission.

android:foregroundServiceType

Gibt an, dass der Dienst ein Dienst im Vordergrund ist, der einem bestimmten Anwendungsfall entspricht. Der Diensttyp "location" im Vordergrund bedeutet beispielsweise, dass eine App den aktuellen Standort des Geräts abruft, in der Regel, um eine vom Nutzer initiierte Aktion in Bezug auf den Gerätestandort fortzusetzen.

Sie können einem bestimmten Dienst mehrere Typen von Diensten im Vordergrund zuweisen.

android:icon
Ein Symbol, das den Dienst darstellt. Dieses Attribut wird als Verweis auf eine Drawable-Ressource festgelegt, die die Bilddefinition enthält. Wenn es nicht festgelegt ist, wird stattdessen das für die gesamte Anwendung angegebene Symbol verwendet. Weitere Informationen finden Sie im Attribut icon des Elements <application>.

Das Symbol des Dienstes, ob hier oder durch das Element <application> festgelegt, ist auch das Standardsymbol für alle Intent-Filter des Dienstes. Weitere Informationen finden Sie im Attribut icon des <intent-filter>-Elements.

android:isolatedProcess
Wenn dieser Wert auf "true" gesetzt ist, wird dieser Dienst unter einem speziellen Prozess ausgeführt, der vom Rest des Systems isoliert ist und keine eigenen Berechtigungen hat. Die einzige Kommunikation mit ihr erfolgt über die Service API mit Bindung und Start.
android:label
Ein visuell lesbarer Name für den Dienst. Wenn dieses Attribut nicht festgelegt ist, wird stattdessen der Labelsatz für die gesamte Anwendung verwendet. Weitere Informationen finden Sie im Attribut label des <application>-Elements.

Das Label des Dienstes, ob hier oder durch das Element <application> festgelegt, ist auch das Standardlabel für alle Intent-Filter des Dienstes. Weitere Informationen finden Sie im Attribut label des <intent-filter>-Elements.

Das Label wird als Verweis auf eine Stringressource festgelegt, sodass es wie andere Strings in der Benutzeroberfläche lokalisiert werden kann. Der Einfachheit halber kann sie beim Entwickeln der Anwendung auch als Rohstring festgelegt werden.

android:name
Der Name der abgeleiteten Service-Klasse, die den Dienst implementiert. Dies ist ein voll qualifizierter Klassenname wie "com.example.project.RoomService". Kurz gesagt: Wenn das erste Zeichen des Namens jedoch ein Punkt ist (z. B. ".RoomService"), wird es an den im <manifest>-Element angegebenen Paketnamen angehängt.

Nachdem Sie Ihre Anwendung veröffentlicht haben, ändern Sie diesen Namen nicht, es sei denn, Sie legen android:exported="false" fest.

Es gibt keine Standardeinstellung. Der Name muss angegeben werden.

android:permission
Der Name einer Berechtigung, die eine Entität benötigt, um den Dienst zu starten oder sich an ihn zu binden. Wenn einem Aufrufer von startService(), bindService() oder stopService() diese Berechtigung nicht gewährt wird, funktioniert die Methode nicht und das Objekt Intent wird nicht an den Dienst übergeben.

Wenn dieses Attribut nicht festgelegt ist, gilt die durch das Attribut permission des <application>-Elements festgelegte Berechtigung für den Dienst. Wenn keines der beiden Attribute festgelegt ist, ist der Dienst nicht durch eine Berechtigung geschützt.

Weitere Informationen zu Berechtigungen finden Sie in der Übersicht des App-Manifests im Abschnitt Berechtigungen und unter Sicherheitsrichtlinien.

android:process
Der Name des Prozesses, in dem der Dienst ausgeführt wird. Normalerweise werden alle Komponenten einer Anwendung in dem für die Anwendung erstellten Standardprozess ausgeführt. Es hat denselben Namen wie das Anwendungspaket. Mit dem Attribut process des <application>-Elements kann ein anderer Standardwert für alle Komponenten festgelegt werden. Eine Komponente kann die Standardeinstellung mit ihrem eigenen process-Attribut überschreiben, sodass Sie Ihre Anwendung auf mehrere Prozesse verteilen können.

Wenn der diesem Attribut zugewiesene Name mit einem Doppelpunkt (:) beginnt, wird bei Bedarf ein neuer, für die Anwendung privater Prozess erstellt und der Dienst wird in diesem Prozess ausgeführt.

Wenn der Prozessname mit einem Kleinbuchstaben beginnt, wird der Dienst in einem globalen Prozess dieses Namens ausgeführt, sofern er dazu berechtigt ist. Dadurch können Komponenten in verschiedenen Anwendungen einen Prozess gemeinsam nutzen, wodurch die Ressourcennutzung reduziert wird.

Siehe auch:
<application>
<activity>
eingeführt in:
API-Level 1