<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>
<property>
Beschreibung:
: 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 Hintergrundvorgänge mit langer Ausführungszeit oder eine umfangreiche Kommunikations-API zu implementieren, die von anderen Anwendungen aufgerufen werden kann.

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

Hinweis:Unter Android 8.0 (API-Level 26) und höher schränkt das System ein, was Ihre App im Hintergrund tun kann. Weitere Informationen finden Sie in den Anleitungen zu Einschränkungen für die Ausführung im Hintergrund und Einschränkungen 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, damit sie wie andere Strings in der Benutzeroberfläche lokalisiert werden kann.
android:directBootAware

Ob der Dienst Direct-Boot-fähig 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
Gibt an, ob der Dienst vom System instanziiert werden kann. "true", 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, einschließlich Dienste, gilt. Die Attribute <application> und <service> müssen beide "true" sein, was standardmäßig der Fall ist, damit der Dienst aktiviert werden kann. Wenn einer der beiden Werte "false" ist, wird der Dienst deaktiviert und kann nicht instanziiert werden.

android:exported
Ob Komponenten anderer Anwendungen den Dienst aufrufen oder mit ihm interagieren können. "true", wenn sie das können, und "false", wenn nicht. Wenn der Wert "false" ist, können nur Komponenten derselben Anwendung oder Anwendungen mit derselben Nutzer-ID den Dienst starten oder eine Verbindung zu ihm herstellen.

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

Dieses Attribut ist nicht die einzige Möglichkeit, die Sichtbarkeit eines Dienstes für andere Anwendungen einzuschränken. Sie können auch eine Berechtigung verwenden, um die externen Einheiten zu beschränken, die mit dem Dienst interagieren können. Weitere Informationen finden Sie unter dem Attribut permission.

android:foregroundServiceType

Gibt an, dass der Dienst ein Dienst im Vordergrund ist, der einen bestimmten Anwendungsfall erfüllt. Ein Diensttyp im Vordergrund von "location" gibt beispielsweise an, dass eine App den aktuellen Standort des Geräts abruft, 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, das den Dienst repräsentiert. Dieses Attribut wird als Referenz auf eine zeichenfähige Ressource festgelegt, die die Bilddefinition enthält. Wenn es nicht festgelegt ist, wird stattdessen das für die Anwendung als Ganzes angegebene Symbol verwendet. Weitere Informationen finden Sie im Attribut icon des Elements <application>.

Das Symbol des Dienstes, das entweder hier oder durch das <application>-Element 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 auf "true" festgelegt, wird dieser Dienst in einem speziellen Prozess ausgeführt, der vom Rest des Systems isoliert ist und keine eigenen Berechtigungen hat. Die einzige Kommunikation mit dem Dienst erfolgt über die Service API, mit der er gebunden und gestartet wird.
android:label
Ein für Nutzer lesbarer Name für den Dienst. Wenn dieses Attribut nicht festgelegt ist, wird stattdessen das für die Anwendung als Ganzes festgelegte Label verwendet. Weitere Informationen finden Sie im Attribut label des Elements <application>.

Das Label des Dienstes, das entweder hier oder durch das Element <application> 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 String-Ressource festgelegt, damit es wie andere Strings in der Benutzeroberfläche lokalisiert werden kann. Während der Entwicklung der Anwendung kann sie 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 ein Punkt ist, z. B. ".RoomService", wird es an den im <manifest>-Element angegebenen Paketnamen angehängt.

Nachdem Sie Ihre Anwendung veröffentlicht haben, dürfen Sie diesen Namen nicht mehr ändern, 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 Einheit benötigt, um den Dienst zu starten oder daran zu binden. Wenn einem Aufrufer von startService(), bindService() oder stopService() diese Berechtigung nicht erteilt wird, funktioniert die Methode nicht und das Intent-Objekt wird nicht an den Dienst gesendet.

Wenn dieses Attribut nicht festgelegt ist, gilt der Berechtigungssatz, der durch das Attribut permission des Elements <application> für den Dienst 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 zum App-Manifest 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 den Standardwert jedoch mit einem eigenen process-Attribut überschreiben, sodass Sie Ihre Anwendung auf mehrere Prozesse verteilen können.

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

Wenn der Prozessname mit einem Kleinbuchstaben beginnt, wird der Dienst in einem globalen Prozess mit diesem Namen ausgeführt, sofern er die entsprechende Berechtigung hat. Dadurch können Komponenten in verschiedenen Anwendungen einen Prozess gemeinsam nutzen, was den Ressourcenverbrauch verringert.

android:stopWithTask
Wenn diese Option 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".
Siehe auch:
<application>
<activity>
Eingeführt in:
API-Level 1