Many apps need to transfer data in the background. This page helps you find the right approach for your needs.
Anwendungsfälle für die Migration
In diesem Abschnitt werden einige häufige Situationen beschrieben, in denen Apps übertragen werden müssen. Daten vom oder zum Gerät und hilft Ihnen, das richtige Tool für Ihre Situation.
- Daten über das Netzwerk übertragen
Wenn die Übertragung vom Nutzer initiiert wurde und Sie den Nutzer behalten müssen informiert über den Fortschritt der Übertragung, verwenden Sie die vom Nutzer initiierte Datenübertragung APIs Andernfalls verwenden Sie WorkManager oder einen entsprechenden Typ von Diensten im Vordergrund.
Wenn Sie einen Download planen müssen, können Sie auch
DownloadManager
DownloadManager
verwaltet und sorgt dafür, dass Downloads nach Fehlern, Geräteneustarts, und Verbindungsänderungen.DownloadManager
bietet jedoch nicht alle Debugging- und Testfunktionen, die inWorkManager
verfügbar sind, undJobScheduler
- Daten auf ein oder von einem lokalen Gerät übertragen
Verwenden Sie eine bestimmte API, falls verfügbar, z. B. das Companion-Gerät. Manager); Andernfalls verwenden Sie
connectedDevice
im Vordergrund.- Medien transcodieren
Verwenden Sie den neuen
mediaProcessing
-Typ des Diensts im Vordergrund.- Eine kurze, wichtige Aufgabe erledigen
- Verarbeiten von Dateien (z. B. Übertragen von Daten auf oder von einer SD-Karte, Ändern der Größe von Inhalten oder Verschlüsseln oder Entschlüsseln von Daten)
Wenn die Aufgabe in weniger als drei Minuten abgeschlossen werden kann, verwenden Sie einen
shortService
Dienst im Vordergrund. Andernfalls verwenden Sie WorkManager.
Vom Nutzer initiierte Datenübertragungs-APIs verwenden
Wenn Ihre App Daten an einen Remote-Server übertragen muss, können Sie den neuen vom Nutzer initiierten Datenübertragungs-APIs. Diese APIs sind geeignet, wenn die trifft Folgendes zu:
- Der Nutzer hat mit der Datenübertragung begonnen.
- Sie müssen den Nutzer über den Fortschritt der Datenübertragung informieren.
- Wenn die Übertragung vom System unterbrochen wird, beeinträchtigt dies die Nutzerfreundlichkeit.
Ist eine dieser Bedingungen nicht erfüllt, sollten Sie WorkManager verwenden. .
Mit einer Medien-App könnten Nutzer beispielsweise Alben herunterladen, um sie lokal abzuspielen. Wenn ein eine Playlist herunterladen und sofort abspielen möchte, können Sie die vom Nutzer initiierten Datenübertragungs-APIs. Wenn die Nutzenden jedoch eine heruntergeladene Playlist, die regelmäßig im Hintergrund aktualisiert wird. wäre WorkManager die bessere Wahl.
Weitere Informationen finden Sie in der Dokumentation zur Migration von Diensten im Vordergrund zu vom Nutzer initiierte Datenübertragungsjobs.
WorkManager verwenden
In den meisten Fällen ist WorkManager die beste Option, wenn Sie Aufgaben planen müssen. Sie müssen die Aufgaben so gestalten, dass sie unterbrochen oder aufgeschoben werden können. durch das System. Weitere Informationen finden Sie in der WorkManager-Dokumentation.
Hier sind einige Hinweise, die hilfreich sein können, wenn Sie von einem Vordergrund -Dienst für WorkManager:
- Wenn Sie die Arbeit so schnell wie möglich ausführen müssen, können Sie einen beschleunigte Bearbeitung. Diese Option ist besonders nützlich, wenn Sie als Reaktion auf eine Nachricht an alle, einen exakten Alarm oder FCM-Nachricht mit hoher Priorität.
- Wenn die Arbeit regelmäßig ausgeführt werden muss, können Sie regelmäßige Arbeiten planen. (geschäftlich). Bei einer regelmäßigen Arbeitsanfrage können Sie ungefähr angeben, wie oft ausgeführt werden, garantiert aber keine bestimmte Zeit. Dadurch kann die System zur Planung von Arbeitsanfragen aus verschiedenen Apps, um den Bedarf auszugleichen auf dem Gerät.
- Sie sollten Arbeitsbeschränkungen definieren, um die richtigen für die Ausführung Ihres Jobs. Wenn Ihre App zum Beispiel nicht dringenden Ressourcen enthält, können Sie angeben, dass der Job während der Gerät wird aufgeladen und ist mit einem nicht getakteten Netzwerk verbunden. WorkManager kann und den Job dann zu einem Zeitpunkt ausführen, bei dem die Systemlast ausgeglichen wird.
- WorkManager kann Jobs bei Bedarf abbrechen und noch einmal versuchen. Beispiel: Der Nutzer kann das Gerät ausschalten, während ein Job ausgeführt wird. kann das System Wiederholen Sie den Job, sobald das Gerät wieder verfügbar ist. Achten Sie darauf, und testen Sie Ihren Workflow, um sicherzustellen, dass der Zyklus zum Abbrechen und Wiederholen funktioniert. ordnungsgemäß funktioniert.
Spezifischeren Typ des Diensts im Vordergrund verwenden
Wenn Sie keine andere Möglichkeit haben, im Hintergrund zu arbeiten,
einen Dienst im Vordergrund verwenden. In diesem Fall sollten Sie eine geeignete
Diensttyp, der anstelle von dataSync
verwendet werden soll. Da in Ihrem Code bereits ein
ist diese Migration unkompliziert: müssen Sie nur
den richtigen Typ und achten Sie darauf, dass Ihre App diese
Anforderungen des Dienstes.
Wenn Sie einen Dienst im Vordergrund verwenden möchten, sollten Sie wie immer Überlegen Sie, ob es eine bessere alternative API gibt, die auf Ihre Nutzung zugeschnitten ist Fall.
Kurzen Dienst im Vordergrund verwenden
Wenn deine App eine kurze, wichtige Aufgabe ausführen muss, wird im Vordergrund ein shortService
ist wahrscheinlich die beste Option. Hier sind einige Situationen, in denen shortService
Dienst im Vordergrund geeignet ist:
- Der Nutzer initiiert eine Aktion, z. B. das Synchronisieren von Daten mit dem Server, und Sie möchten damit der Vorgang auch dann abgeschlossen wird, wenn der Nutzer in den Hintergrund.
- Speichern von speicherinternen Informationen im nichtflüchtigen Speicher.
- Informationen verschlüsseln oder entschlüsseln
Umfassende Informationen finden Sie in der Dokumentation zu shortService
.
Vordergrunddienst eines verbundenen Geräts verwenden
Wenn Sie Daten auf ein anderes lokales Gerät übertragen möchten, sollten Sie ein
connectedDevice
-Dienst im Vordergrund. Im Folgenden sind einige häufige Situationen aufgeführt.
wo Sie dies möglicherweise tun müssen:
- Kommunikation mit Bluetooth-Zubehör wie Kopfhörern oder einer Smartwatch
- Die Übertragung von Daten auf ein lokal verbundenes Gerät per USB-Verbindung, oder eine lokale Internetverbindung
In diesen Fällen können Sie jedoch möglicherweise das Companion-Gerät verwenden. , um sich mit dem Gerät zu verbinden, anstatt einen Dienst im Vordergrund zu verwenden. Wenn für Ihren Anwendungsfall eine spezielle API verfügbar ist, ist diese ist meist eine bessere Wahl, als einen Dienst im Vordergrund zu verwenden.
Neuen Dienst zur Medienverarbeitung im Vordergrund verwenden
Wenn Sie Mediendaten verarbeiten müssen, können Sie die neue mediaProcessing
verwenden.
Dienst im Vordergrund. Dieser Diensttyp ist verfügbar, wenn deine App auf Android ausgerichtet ist
15 oder höher. Dieser Diensttyp ist beispielsweise
angebracht, wenn
muss Ihre App Medien zur Wiedergabe von einem Format in ein anderes transcodieren. Für
finden Sie in der
Dokumentation zu Diensten im Vordergrund
Weitere Informationen
Weitere Informationen zu dieser Änderung an Diensten im Vordergrund finden Sie hier: Weitere Informationen:
- Unterstützung bei der Arbeit im Hintergrund
- Blogpost: Verbesserte Konsistenz bei Hintergrundarbeiten auf Android-Geräte