In der Dokumentation zu Diensten im Vordergrund wird das aktuelle Verhalten von Android-Vordergrunddiensten beschrieben. Die Dokumentation enthält Best Practices für die meisten Apps, unabhängig davon, ob sie auf die neueste Android-Version ausgerichtet sind.
Auf dieser Seite werden einige der wichtigsten Änderungen an Vordergrunddiensten beschrieben, die in letzter Zeit vorgenommen wurden, sowie die Auswirkungen auf Apps, die nicht auf die neueste Version der Android-Plattform ausgerichtet sind. In vielen Fällen werden Best Practices, die für Apps mit niedrigeren API-Levels optional waren, für Apps mit höheren API-Levels obligatorisch.
Android 16 (API-Level 36)
Die folgenden Änderungen gelten für Apps, die unter Android 16 oder höher ausgeführt werden, unabhängig davon, auf welches API-Level sie ausgerichtet sind:
Hintergrundjobs, die von einem Dienst im Vordergrund gestartet werden, müssen jetzt die entsprechenden Laufzeitkontingente einhalten. Dazu gehören Jobs, die direkt mit
JobScheduler
geplant wurden, sowie Jobs, die von anderen Bibliotheken wie WorkManager oderDownloadManager
erstellt wurden.Wenn Sie Daten als Reaktion auf eine Nutzeraktion übertragen möchten, sollten Sie einen vom Nutzer initiierten Datenübertragungsjob verwenden. Diese Jobs sind von den normalen Jobkontingenten ausgenommen.
Android 15 (API-Level 35)
Die folgenden Anforderungen gelten für Apps, die auf API-Level 35 oder höher ausgerichtet sind:
- Es gibt neue Einschränkungen für die Ausführungsdauer von
dataSync
-Vordergrunddiensten. Diese Einschränkungen werden unter Zeitüberschreitung bei Vordergrunddiensten beschrieben. Ähnliche Einschränkungen gelten für den (in Android 15 neuen) VordergrunddiensttypmediaProcessing
. BOOT_COMPLETED
-Dienste im Vordergrund dürfen bestimmte Dienste im Vordergrund nicht mehr starten.- Apps mit der Berechtigung
SYSTEM_ALERT_WINDOW
dürfen Dienste im Vordergrund nur dann im Hintergrund starten, wenn sie derzeit ein sichtbares Overlay-Fenster haben oder eine der anderen Ausnahmen von den Einschränkungen für den Start im Hintergrund erfüllen. Bisher war die Ausnahme für diese Apps umfassender.
Android 14 (API‑Level 34)
Für Apps, die auf API-Level 34 oder höher ausgerichtet sind, gelten die folgenden Anforderungen:
- Sie müssen alle Dienste im Vordergrund mit ihren Diensttypen deklarieren.
- Apps müssen den entsprechenden Berechtigungstyp für die Art der Arbeit anfordern, die der Dienst im Vordergrund ausführen wird. Jeder Typ von Dienst im Vordergrund hat einen entsprechenden Berechtigungstyp. Wenn eine App beispielsweise einen Dienst im Vordergrund startet, der die Kamera verwendet, müssen Sie sowohl die Berechtigung
FOREGROUND_SERVICE
als auchFOREGROUND_SERVICE_CAMERA
anfordern. Wenn eine App auf API‑Level 34 oder höher ausgerichtet ist und die entsprechende spezifische Berechtigung nicht anfordert, löst das System eineSecurityException
aus.
Android 12 (API-Level 31)
Die folgenden Anforderungen gelten für Apps, die auf API-Level 31 oder höher ausgerichtet sind:
- Apps dürfen keine Vordergrunddienste starten, wenn sie im Hintergrund ausgeführt werden. Es gibt jedoch einige Ausnahmen. Weitere Informationen und Informationen zu den Ausnahmen von dieser Regel finden Sie unter Einschränkungen beim Starten eines Vordergrunddienstes im Hintergrund.
Android 11 (API-Level 30)
Für Apps, die auf API-Level 30 oder höher ausgerichtet sind, gelten die folgenden Anforderungen:
- Wenn die Dienste im Vordergrund einer App die Kamera oder das Mikrofon verwenden, muss die App den Dienst mit dem Diensttyp
camera
bzw.microphone
deklarieren.
Android 10 (API-Level 29)
Die folgenden Anforderungen gelten für Apps, die auf API‑Level 29 oder höher ausgerichtet sind:
- Wenn in den Diensten im Vordergrund einer App Standortinformationen verwendet werden, muss die App den Dienst mit dem Diensttyp
location
deklarieren.
Android 9 (API-Level 28)
In Android 9 wird die Berechtigung FOREGROUND_SERVICE
eingeführt. Apps, die unter Android 9 ausgeführt werden und Dienste im Vordergrund verwenden, müssen diese Berechtigung haben.
Wenn eine App, die auf API-Level 28 oder höher ausgerichtet ist, versucht, einen Dienst im Vordergrund zu erstellen, ohne die Berechtigung FOREGROUND_SERVICE
anzufordern, löst das System eine SecurityException
aus.