Optionen für Hintergrundaufgaben zur Datenübertragung

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

WorkManager

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 setExpedited, wenn die Aufgabe sofort ausgeführt werden muss.

Daten regelmäßig mit einem Server synchronisieren

Herunterladen oder Hochladen von Medien im Hintergrund (nicht vom Nutzer initiiert)

Vom Nutzer initiierter Datenübertragungsvorgang

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

Dienst im Vordergrund

Für kurze, kritische Aufgaben oder wenn WorkManager keine Option ist. Eine Benachrichtigung informiert den Nutzer über den Fortschritt der Übertragung.

Beginnt sofort

connectedDevice: Daten mit einem verbundenen Gerät synchronisieren

shortService: Dateiverarbeitung unter 3 Minuten

mediaProcessing: Codieren oder Decodieren einer Mediendatei

Spezifische API

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.

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?

KI-Prompts verwenden

KI-Prompts sind für die Verwendung in Gemini in Android Studio vorgesehen.

Weitere Informationen zu Gemini in Studio finden Sie unter https://developer.android.com/studio/gemini/overview.

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.

Zusätzliche Ressourcen