<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"
         android:stopWithTask=["true" | "false"]>
    ...
</service>
enthalten in:
<application>
kann Folgendes enthalten:
<intent-filter>
<meta-data>
description:
 deklariert einen Dienst, eine Service-Unterklasse, als eine der Komponenten der Anwendung. Im Gegensatz zu Aktivitäten haben Dienste keine visuelle Benutzeroberfläche. Sie werden verwendet, um lang andauernde Hintergrundvorgänge oder eine Rich Communications API zu implementieren, die von anderen Anwendungen aufgerufen werden kann.

Alle Dienste müssen in der Manifestdatei durch <service>-Elemente dargestellt werden. Anzeigen, die dort nicht deklariert sind, werden vom System nicht erkannt und nie ausgeliefert.

Hinweis:Unter Android 8.0 (API-Ebene 26) und höher schränkt das System die Funktionen Ihrer App ein, während sie im Hintergrund ausgeführt wird. Weitere Informationen finden Sie in den Leitfäden zu Limits für die Ausführung im Hintergrund und Limits für die Standortermittlung im Hintergrund.

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

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

Hinweis : Während des Direktstarts 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
Ob der Dienst vom System instanziiert werden kann. Geben Sie "true" ein, wenn das möglich ist, und "false", wenn nicht. Der Standardwert ist "true".

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

android:exported
Ob Komponenten anderer Anwendungen den Dienst aufrufen oder mit ihm interagieren können. Wenn ja, geben Sie "true" ein. Andernfalls "false". Wenn der Wert "false" ist, können nur Komponenten derselben Anwendung oder Anwendungen mit derselben Nutzer-ID den Dienst starten oder daran binden.

Der Standardwert hängt davon ab, ob der Dienst Intent-Filter enthält. Da keine Filter vorhanden sind, kann die Funktion nur durch Angabe des genauen Klassennamens aufgerufen werden. Das bedeutet, dass der Dienst nur für die interne Verwendung in der Anwendung gedacht ist, da andere den Klassennamen nicht kennen. In diesem Fall ist der Standardwert also "false". Wenn jedoch mindestens ein Filter vorhanden ist, ist der Dienst für die externe Nutzung vorgesehen. Der Standardwert ist dann "true".

Dieses Attribut ist nicht die einzige Möglichkeit, die Sichtbarkeit eines Dienstes für andere Anwendungen einzuschränken. Mit einer Berechtigung können Sie auch die externen Entitäten einschränken, die mit dem Dienst interagieren können. Weitere Informationen finden Sie im Hilfeartikel zum permission-Attribut.

android:foregroundServiceType

Gibt an, dass es sich bei dem Dienst um einen Dienst im Vordergrund handelt, der einem bestimmten Anwendungsfall entspricht. Ein Diensttyp im Vordergrund vom Typ "location" gibt beispielsweise an, dass eine App den aktuellen Standort des Geräts abrufen möchte, in der Regel um eine vom Nutzer initiierte Aktion im Zusammenhang mit dem Gerätestandort fortzusetzen.

Sie können einem bestimmten Dienst mehrere Typen für Dienste im Vordergrund zuweisen.

android:icon
Ein Symbol für den Dienst. Dieses Attribut wird als Verweis auf eine Zeichnen-Ressource mit der Bilddefinition festgelegt. Wenn es nicht festgelegt ist, wird stattdessen das Symbol verwendet, das für die Anwendung insgesamt angegeben ist. Weitere Informationen finden Sie im Attribut icon des Elements <application>.

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

android:isolatedProcess
Wenn dieser Dienst auf "true" festgelegt ist, wird er in einem speziellen Prozess ausgeführt, der vom Rest des Systems isoliert ist und keine eigenen Berechtigungen hat. Die einzige Kommunikation mit ihm erfolgt über die Service API, einschließlich Bindung und Start.
android:label
Ein nutzerlesbarer Name für den Dienst. Wenn dieses Attribut nicht festgelegt ist, wird stattdessen das Label verwendet, das für die Anwendung insgesamt festgelegt wurde. Weitere Informationen finden Sie im Attribut label des Elements <application>.

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

Das Label wird als Verweis auf eine Stringressource festgelegt, damit es wie andere Strings in der Benutzeroberfläche lokalisiert werden kann. Zur Vereinfachung kann es während der Entwicklung der Anwendung jedoch auch als Rohstring festgelegt werden.

android:name
Der Name der Service-Unterklasse, die den Dienst implementiert. Dies ist ein vollständig qualifizierter Klassenname, z. B. "com.example.project.RoomService". Wenn das erste Zeichen des Namens jedoch ein Punkt ist, z. B. ".RoomService", wird er dem im <manifest>-Element angegebenen Paketnamen angehängt.

Ändern Sie diesen Namen nach der Veröffentlichung Ihrer App nicht, es sei denn, Sie haben android:exported="false" festgelegt.

Es gibt keinen Standardwert. Der Name muss angegeben werden.

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

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

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

android:process
Der Name des Prozesses, in dem der Dienst ausgeführt wird. Normalerweise werden alle Komponenten einer Anwendung im Standardprozess ausgeführt, der für die Anwendung erstellt wurde. Er hat denselben Namen wie das Anwendungspaket. Mit dem Attribut process des Elements <application> kann ein anderer Standardwert für alle Komponenten festgelegt werden. Eine Komponente kann das Standardattribut jedoch mit einem 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 Prozess erstellt, der nur für die Anwendung gilt, 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. So können Komponenten in verschiedenen Anwendungen einen Prozess gemeinsam nutzen, was die Ressourcennutzung reduziert.

android:stopWithTask
Wenn diese Einstellung auf "true" festgelegt ist, beendet das System den Dienst automatisch, wenn der Nutzer eine Aufgabe entfernt, die auf einer Aktivität basiert, die der App gehört. Der Standardwert ist "false".
Weitere Informationen:
<application>
<activity>
eingeführt in:
API-Level 1