Viele Apps müssen Daten im Hintergrund übertragen. In diesem Leitfaden werden Optionen für eine zuverlässige Hintergrunddatenübertragung beschrieben und Beispiele für deren Implementierung gegeben.
Häufige Szenarien für die Übertragung von Hintergrunddaten
In diesem Abschnitt werden einige häufige Situationen beschrieben, in denen Apps Daten auf das Gerät oder vom Gerät übertragen müssen. Außerdem wird erläutert, wie Sie das richtige Tool für Ihre Situation auswählen.
Bei der Auswahl zwischen APIs sollten Sie sich die folgenden Fragen stellen:
- Wird die Übertragung vom Nutzer initiiert?
- Gibt es eine API, die diese Übertragung übernimmt?
- Muss die Arbeit sofort ausgeführt werden?
Option | Verwendung | Dauer | Beispiele |
---|---|---|---|
Zum Planen von Aufgaben mit einer Dauer von weniger als 10 Minuten, die ausgeführt werden sollen, wenn die App nicht sichtbar ist. |
Aufschiebbar: Kann auch durch Einschränkungen angepasst werden Sofort: Verwenden Sie
|
Daten regelmäßig mit einem Server synchronisieren Herunterladen oder Hochladen von Medien im Hintergrund (nicht vom Nutzer initiiert) |
|
Wenn die Datenübertragung vom Nutzer ausgelöst wird, müssen Sie ihn über den Fortschritt der Übertragung auf dem Laufenden halten. |
Vom Nutzer initiiert (z.B. durch Klicken auf eine Schaltfläche) – beginnt sofort |
Foto hochladen, Datei herunterladen |
|
Für kurze, kritische Aufgaben oder wenn WorkManager keine Option ist. Eine Benachrichtigung informiert den Nutzer über den Fortschritt der Übertragung. |
Beginnt sofort |
|
|
Verwenden Sie diese, sofern vorhanden. Dies kann Vorteile wie eine optimierte Leistung und eine verbesserte Systemintegration mit sich bringen. |
Variiert |
Daten mit einem verbundenen Gerät synchronisieren |
Wenn Ihr Szenario nicht unter „Häufige Szenarien“ aufgeführt ist, finden Sie in den folgenden Abschnitten die am besten geeignete API für Ihren Anwendungsfall. WorkManager ist wahrscheinlich die richtige Lösung.
Vom Nutzer initiierte Datenübertragungsvorgänge verwenden
Wenn Ihre App Daten an einen Remote-Server übertragen muss, sollten Sie einen vom Nutzer initiierten Datenübertragungsvorgang verwenden. Dieser Jobtyp ist geeignet, wenn Folgendes zutrifft:
- Der Nutzer hat die Datenübertragung gestartet.
- Sie müssen den Nutzer über den Fortschritt der Datenübertragung auf dem Laufenden halten.
- Es ist schlecht für die Nutzererfahrung, wenn das System die Übertragung unterbricht.
Wenn eine dieser Bedingungen nicht erfüllt ist, sollten Sie stattdessen WorkManager verwenden.
In einer Media-App können Nutzer beispielsweise Alben herunterladen, um sie lokal wiederzugeben. Wenn ein Nutzer eine Playlist herunterladen und sofort abspielen möchte, sollten Sie den Jobtyp „vom Nutzer initiierte Datenübertragung“ verwenden. Wenn die heruntergeladene Playlist hingegen regelmäßig im Hintergrund aktualisiert werden soll, ohne dass der Nutzer dies veranlassen muss, ist WorkManager die bessere Wahl.
Weitere Informationen, einschließlich dazu, wie Sie einen vom Nutzer initiierten Datenübertragungsjob erstellen und ausführen, finden Sie in der Dokumentation zu vom Nutzer initiierten Datenübertragungsjobs.
WorkManager für die Datenübertragung verwenden
In den meisten Fällen ist WorkManager die beste Option, wenn Sie Aufgaben planen müssen. Die Aufgaben müssen so konzipiert sein, dass sie vom System unterbrochen oder aufgeschoben werden können. Weitere Informationen finden Sie in der WorkManager-Dokumentation.
Folgendes ist bei der Verwendung von WorkManager für die Übertragung von Hintergrunddaten zu beachten:
- Wenn Sie die Arbeit so schnell wie möglich erledigen müssen, können Sie eine beschleunigte Arbeitsanfrage planen. Diese Option ist besonders nützlich, wenn Sie die Arbeit als Reaktion auf eine Broadcast-, Exact-Alarm- oder FCM-Nachricht mit hoher Priorität planen.
- Wenn die Aufgabe regelmäßig ausgeführt werden soll, können Sie regelmäßige Aufgaben planen. Mit einer Anfrage für periodische Arbeit können Sie ungefähr angeben, wie oft die Arbeit ausgeführt werden soll. Eine bestimmte Zeit wird jedoch nicht garantiert. So kann das System Arbeitsanfragen von verschiedenen Apps planen, um die Anforderungen an das Gerät auszugleichen.
- Sie sollten Arbeitsbeschränkungen definieren, um die richtigen Umstände für die Ausführung Ihres Jobs anzugeben. Wenn Ihre App beispielsweise nicht dringende Ressourcen herunterladen muss, können Sie angeben, dass der Job ausgeführt werden soll, während das Gerät aufgeladen wird und mit einem Netzwerk mit unbegrenztem Datenvolumen verbunden ist. WorkManager kann den Job dann zu einem Zeitpunkt ausführen, zu dem die Systemlast ausgeglichen ist.
- WorkManager kann einen Job bei Bedarf abbrechen und wiederholen. Der Nutzer schaltet das Gerät beispielsweise aus, während ein Job ausgeführt wird. Das System kann den Job dann wiederholen, wenn das Gerät wieder verfügbar ist. Achten Sie darauf, dass Sie Ihren Workflow so gestalten und testen, dass der Zyklus aus Abbrechen und Wiederholen ordnungsgemäß funktioniert.
- Lang andauernde Worker (Vordergrunddienst):WorkManager kann Aufgaben unterstützen, die länger als 10 Minuten dauern. Dazu wird ein Vordergrunddienst für Ihre App erstellt. Das bedeutet, dass für sie dieselben Einschränkungen wie für einen Vordergrunddienst und Jobs gelten, einschließlich Einschränkungen für den Start im Hintergrund und Ausführungslimits (Jobs, die länger als 10 Minuten dauern, werden vom System neu geplant).
JobScheduler ist eine alternative Option zum Planen von Hintergrundaufgaben. Im Gegensatz zu WorkManager ist hier mehr Konfiguration erforderlich. Dafür haben Sie aber Zugriff auf APIs, die derzeit nicht in WorkManager verfügbar sind, z. B. setPrefetch
, setUserInitiated
und getPendingJobReasons
.
Bestimmte API verwenden
Verwenden Sie eine bestimmte API, sofern verfügbar (z. B. Companion Device Manager). Andernfalls verwenden Sie einen connectedDevice
-Vordergrunddienst.
KI‑Prompt
Anwendungsfallspezifische APIs identifizieren
Bei diesem Prompt werden bestimmte APIs für Datenübertragungsaufgaben angefordert.
I want to transfer data from an Android mobile device to [device_type]. Is there a specific API available?
Spezifischeren Typ für Dienst im Vordergrund verwenden
Wenn WorkManager und JobScheduler für die jeweilige Hintergrundaufgabe nicht geeignet sind, müssen Sie möglicherweise einen Dienst im Vordergrund verwenden.
Wie immer sollten Sie bei der Verwendung eines Dienstes im Vordergrund prüfen, ob es eine bessere alternative API gibt, die auf Ihren Anwendungsfall zugeschnitten ist.
Kurzen Vordergrunddienst verwenden
Wenn Ihre App eine kurze, wichtige Aufgabe ausführen muss, ist ein shortService
-Vordergrunddienst möglicherweise die beste Option. Hier sind einige Situationen, in denen ein shortService
-Dienst im Vordergrund sinnvoll sein kann:
- Der Nutzer initiiert eine Aktion (z. B. die Synchronisierung von Daten mit dem Server) und Sie möchten sicherstellen, dass der Vorgang abgeschlossen wird, auch wenn der Nutzer die App sofort in den Hintergrund verschiebt.
- In-Memory-Informationen in einem persistenten Speicher speichern.
- Verschlüsselung oder Entschlüsselung von Informationen.
Ausführliche Informationen finden Sie in der Dokumentation zu shortService
.
Vordergrunddienst für verbundenes Gerät verwenden
Wenn Sie Daten auf ein anderes lokales Gerät übertragen müssen, sollten Sie möglicherweise einen connectedDevice
-Vordergrunddienst verwenden. Hier sind einige häufige Situationen, in denen Sie dies tun müssen:
- Kommunikation mit Bluetooth-Zubehör wie Kopfhörern oder einer Smartwatch
- Übertragen von Daten auf ein lokal verbundenes Gerät über eine USB-Verbindung, NFC oder eine lokale Internetverbindung
In diesen Situationen können Sie jedoch möglicherweise den Companion Device Manager verwenden, um eine Verbindung zum Gerät herzustellen, anstatt einen Vordergrunddienst zu nutzen. Wie immer gilt: Wenn für Ihren Anwendungsfall eine spezielle API verfügbar ist, ist das in der Regel eine bessere Wahl als die Verwendung eines Dienstes im Vordergrund.
Neuen Media-Verarbeitungsdienst im Vordergrund verwenden
Wenn Sie Media-Daten verarbeiten müssen, können Sie den mediaProcessing
-Vordergrunddienst verwenden. Dieser Diensttyp ist verfügbar, wenn Ihre App auf Android 15 oder höher ausgerichtet ist. Dieser Diensttyp ist beispielsweise geeignet, wenn Ihre App Medien zur Wiedergabe von einem Format in ein anderes transkodieren muss. Weitere Informationen finden Sie in der Dokumentation zum Vordergrunddienst für die Medienverarbeitung.