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 Hintergrunddatenübertragung

In diesem Abschnitt werden einige häufige Situationen beschrieben, in denen Apps Daten auf das Gerät oder von ihm übertragen müssen. Außerdem erfahren Sie, wie Sie das richtige Tool für Ihre Situation auswählen.

Berücksichtigen Sie bei der Auswahl einer API die folgenden Fragen:

  • Wurde die Übertragung vom Nutzer initiiert?
  • Gibt es eine vorhandene API, die diese Übertragung verarbeitet?
  • 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.

Verschiebbar: Kann auch durch Einschränkungen angepasst werden

Sofort: Verwenden Sie setExpedited, wenn die Arbeit sofort ausgeführt werden muss.

Daten regelmäßig mit einem Server synchronisieren

Herunterladen oder Hochladen von Medien im Netzwerk, das im Hintergrund (nicht vom Nutzer) initiiert wird

Vom Nutzer initiierter Datenübertragungsjob

Wenn die Datenübertragung vom Nutzer ausgelöst wird und Sie ihn über den Fortschritt der Übertragung informieren müssen.

Vom Nutzer initiiert (z.B. durch Klicken auf eine Schaltfläche) – wird sofort gestartet

Fotos hochladen, Dateien herunterladen

Dienst im Vordergrund

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

Sofort starten

connectedDevice: Synchronisierung von Daten mit einem verbundenen Gerät

shortService: Dateiverarbeitung unter 3 Minuten

mediaProcessing: Codierung oder Decodierung einer Mediendatei

Bestimmte API

Verwenden Sie diese Option, wenn für diesen bestimmten Vorgang eine vorhanden ist. Kann Vorteile wie eine optimierte Leistung und eine verbesserte Systemintegration bieten.

Variiert

Daten mit einem verbundenen Gerät synchronisieren

Wenn Ihr Szenario nicht unter den gängigen Szenarien aufgeführt ist, finden Sie in den folgenden Abschnitten die am besten geeignete API für Ihren Anwendungsfall. WorkManager ist wahrscheinlich die richtige Wahl.

Vom Nutzer initiierte Datenübertragungsvorgänge verwenden

Wenn Ihre App Daten auf einen Remote-Server übertragen muss, sollten Sie einen vom Nutzer initiierten Datenübertragungsjob 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 informieren.
  • Es ist schädlich für die Nutzerfreundlichkeit, wenn das System die Übertragung unterbricht.

Wenn eine dieser Bedingungen nicht erfüllt ist, sollten Sie stattdessen WorkManager verwenden.

In einer Medien-App können Nutzer beispielsweise Alben herunterladen, um sie lokal abzuspielen. Wenn ein Nutzer eine Playlist herunterladen und sofort abspielen möchte, solltest du den Jobtyp „Vom Nutzer initiierte Datenübertragung“ verwenden. Wenn der Nutzer hingegen möchte, dass die heruntergeladene Playlist regelmäßig im Hintergrund ohne Nutzereingriff aktualisiert wird, ist WorkManager die bessere Wahl.

Weitere Informationen, einschließlich der Erstellung und Ausführung eines vom Nutzer initiierten Datenübertragungsjobs, finden Sie in der Dokumentation zu vom Nutzer initiierte Datenübertragungsjobs.

WorkManager für die Datenübertragung verwenden

In den meisten Fällen ist WorkManager die beste Option, wenn Sie Aufgaben planen möchten. Denken Sie daran, dass Sie die Aufgaben so gestalten müssen, dass sie vom System unterbrochen oder verschoben werden können. Weitere Informationen finden Sie in der WorkManager-Dokumentation.

Beachten Sie Folgendes, wenn Sie WorkManager für die Hintergrunddatenübertragung verwenden:

  • Wenn Sie die Arbeit so schnell wie möglich ausführen möchten, können Sie einen beschleunigten Arbeitsauftrag planen. Diese Option ist besonders nützlich, wenn Sie die Aufgabe als Reaktion auf eine Übertragung, einen genauen Wecker oder eine 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 wiederkehrende Aufgaben können Sie ungefähr angeben, wie oft die Aufgabe ausgeführt werden soll. Es wird jedoch keine bestimmte Uhrzeit 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 Bedingungen für die Ausführung Ihres Jobs anzugeben. Wenn Ihre App beispielsweise nicht dringend benötigte Ressourcen herunterladen muss, können Sie angeben, dass der Job ausgeführt werden soll, während das Gerät geladen wird und mit einem unbegrenzten Netzwerk verbunden ist. WorkManager kann Ihren Job dann zu einer Zeit ausführen, zu der die Auslastung des Systems ausgeglichen ist.
  • WorkManager kann einen Job bei Bedarf abbrechen und noch einmal versuchen. Beispielsweise kann der Nutzer das Gerät ausschalten, während ein Job ausgeführt wird. Das System kann den Job dann noch einmal ausführen, wenn das Gerät wieder verfügbar ist. Entwerfen und testen Sie Ihren Workflow, um sicherzustellen, dass der Abbruch- und Wiederholungszyklus ordnungsgemäß funktioniert.
  • Langlaufende Worker (Dienst im Vordergrund):WorkManager kann Aufgaben unterstützen, die länger als 10 Minuten dauern, indem ein Dienst im Vordergrund für Ihre App erstellt wird. Das bedeutet, dass er denselben Einschränkungen wie Dienste und Jobs im Vordergrund unterliegt, einschließlich Einschränkungen beim Starten aus dem 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 Hintergrundarbeiten. Im Gegensatz zu WorkManager ist hier mehr Konfiguration erforderlich. Sie haben jedoch 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, falls verfügbar (z. B. den Companion Device Manager). Andernfalls verwenden Sie einen connectedDevice-Dienst im Vordergrund.

Anwendungsfallspezifische APIs identifizieren

In 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 (neueste Canary-Version erforderlich)

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

Einen genaueren Typ für Dienste 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 sich überlegen, ob es eine bessere alternative API gibt, die auf Ihren Anwendungsfall zugeschnitten ist.

Kurzen Dienst im Vordergrund verwenden

Wenn Ihre App eine kurze, kritische Aufgabe ausführen muss, ist ein shortService Dienst im Vordergrund möglicherweise die beste Option. Hier sind einige Situationen, in denen ein shortService Dienst im Vordergrund geeignet sein könnte:

  • Der Nutzer initiiert eine Aktion (z. B. die Synchronisierung von Daten mit dem Server) und Sie möchten dafür sorgen, dass der Vorgang abgeschlossen wird, auch wenn der Nutzer die App sofort in den Hintergrund schickt.
  • Speichern von Informationen im Arbeitsspeicher im nichtflüchtigen Speicher
  • Informationen verschlüsseln oder entschlüsseln

Ausführliche Informationen finden Sie in der Dokumentation zu shortService.

Dienst im Vordergrund eines verbundenen Geräts verwenden

Wenn Sie Daten auf ein anderes lokales Gerät übertragen möchten, können Sie einen connectedDevice-Dienst im Vordergrund 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
  • Übertragung von Daten über eine USB-Verbindung, NFC oder eine lokale Internetverbindung auf ein lokal verbundenes Gerät

In diesen Fällen können Sie jedoch möglicherweise den Begleitergerätemanager verwenden, um eine Verbindung zum Gerät herzustellen, anstatt einen Dienst im Vordergrund zu verwenden. Wie immer ist es in der Regel besser, eine spezielle API zu verwenden, wenn eine solche für Ihren Anwendungsfall verfügbar ist, als einen Dienst im Vordergrund.

Neuen Dienst für die Medienverarbeitung im Vordergrund verwenden

Wenn Sie Mediendaten verarbeiten müssen, können Sie den mediaProcessing-Dienst im Vordergrund verwenden. Dieser Diensttyp ist verfügbar, wenn Ihre App auf Android 15 oder höher ausgerichtet ist. Dieser Diensttyp eignet sich beispielsweise, wenn Ihre App Medien zur Wiedergabe von einem Format in ein anderes umwandeln muss. Weitere Informationen finden Sie in der Dokumentation zum Dienst zur Medienverarbeitung im Vordergrund.

Zusätzliche Ressourcen