Dauerhafte Arbeit Teil von Android Jetpack
Die Arbeit bleibt bestehen, wenn sie durch App-Neustarts und Systemstart geplant wird neu gestartet. WorkManager ist die empfohlene Lösung für hartnäckige Arbeit. Da die meisten Hintergrundverarbeitungen am besten durch harte Arbeit erreicht werden, Daher ist WorkManager auch die primäre empfohlene API für den Hintergrund. im Allgemeinen verarbeitet werden.
Arten persistenter Arbeit
WorkManager behandelt drei Arten von dauerhafter Arbeit:
- Sofort: Aufgaben, die sofort beginnen und bald abgeschlossen werden müssen. Kann sein beschleunigt werden.
- Lang andauern: Aufgaben, die länger dauern können, möglicherweise länger als 10 Minuten.
- Ausschließlich: Geplante Aufgaben, die zu einem späteren Zeitpunkt gestartet werden und ausgeführt werden können regelmäßig.
Abbildung 1 zeigt, wie die verschiedenen Arten von hartnäckiger Arbeit eine andere.
<ph type="x-smartling-placeholder">In ähnlicher Weise werden die verschiedenen Arten von Arbeiten in der folgenden Tabelle beschrieben.
Typ | Periodizität | Zugriff |
---|---|---|
Sofort | Einmal | OneTimeWorkRequest und Worker . Wenn du schneller arbeiten möchtest, rufe für deine OneTimeWorkRequest setExpedited() an. |
Langlauf | Einmalig oder regelmäßig | Beliebige WorkRequest oder Worker . Rufen Sie setForeground() im Worker auf, um die Benachrichtigung zu verarbeiten. |
Ausschließlich | Einmalig oder regelmäßig | PeriodicWorkRequest und Worker . |
Weitere Informationen zum Einrichten von WorkManager finden Sie in der Definition Ihres WorkRequests.
WorkManager-Funktionen
WorkManager bietet nicht nur eine einfachere und konsistentere API, sondern auch ein weitere wichtige Vorteile:
Arbeitsbeschränkungen
Deklarativ die optimalen Bedingungen für die Ausführung Ihrer Arbeit mit Arbeits- Einschränkungen. Beispiel: Die Ausführung sollte nur auf einem nicht getakteten Gerät erfolgen. Netzwerk aktiviert haben, wenn das Gerät inaktiv ist oder genügend Akku hat.
Zuverlässige Planung
Mit WorkManager können Sie Aufgaben planen, die einmalig oder wiederholt mithilfe flexibler Planungsfenster Aufgaben können getaggt und benannt werden Darüber hinaus können Sie einmalige, auswechselbare Arbeiten planen Gruppen von Zusammenarbeiten.
Die geplante Arbeit wird in einer intern verwalteten SQLite-Datenbank gespeichert und WorkManager sorgt dafür, dass diese Arbeit bestehen bleibt und verschoben wird. bei Geräteneustarts.
Darüber hinaus hält WorkManager sich an energiesparende Funktionen und Best Practices. wie dem Stromsparmodus, sodass Sie sich darüber keine Gedanken machen müssen.
Schnelle Arbeit
Mit WorkManager können Sie die sofortige Ausführung von Arbeiten im Hintergrund. Für Aufgaben, die wichtig sind, sollten Sie Beschleunigte Aufgaben verwenden. die innerhalb weniger Minuten abgeschlossen werden.
Flexible Wiederholungsrichtlinie
Manchmal scheitert die Arbeit. WorkManager bietet flexible Wiederholungsrichtlinien, darunter: eine konfigurierbare exponentielle Backoff-Richtlinie
Verkettung der Arbeit
Bei komplexen Aufgaben können Sie einzelne Aufgaben verketten mithilfe eines eine intuitive Benutzeroberfläche, mit der Sie steuern können, welche Teile sequentiell ausgeführt werden, die parallel laufen.
Kotlin
val continuation = WorkManager.getInstance(context) .beginUniqueWork( Constants.IMAGE_MANIPULATION_WORK_NAME, ExistingWorkPolicy.REPLACE, OneTimeWorkRequest.from(CleanupWorker::class.java) ).then(OneTimeWorkRequest.from(WaterColorFilterWorker::class.java)) .then(OneTimeWorkRequest.from(GrayScaleFilterWorker::class.java)) .then(OneTimeWorkRequest.from(BlurEffectFilterWorker::class.java)) .then( if (save) { workRequest<SaveImageToGalleryWorker>(tag = Constants.TAG_OUTPUT) } else /* upload */ { workRequest<UploadWorker>(tag = Constants.TAG_OUTPUT) } )
Java
WorkManager.getInstance(...) .beginWith(Arrays.asList(workA, workB)) .then(workC) .enqueue();
Sie können für jede Arbeitsaufgabe Eingabe- und Ausgabedaten definieren. Bei der Verkettung der Zusammenarbeit übergibt WorkManager automatisch Ausgabedaten von von einer Arbeitsaufgabe zur nächsten.
Integrierte Threading-Interoperabilität
WorkManager lässt sich nahtlos in Coroutines und RxJava einbinden. und bietet die Flexibilität, eigene asynchrone APIs einzustecken.
Zuverlässige Arbeit mit WorkManager
WorkManager ist für Aufgaben gedacht, die eine zuverlässige Ausführung erfordern, auch wenn wenn Nutzende einen Bildschirm verlassen, die App beendet oder das Gerät neu gestartet wird. Für Beispiel:
- Senden von Logs oder Analysen an Back-End-Dienste
- Regelmäßige Synchronisierung von Anwendungsdaten mit einem Server
WorkManager ist nicht für in Bearbeitung befindliche Hintergrundarbeiten gedacht, die wenn der App-Prozess beendet wird. Es ist auch keine allgemeine Lösung für alle Arbeiten, die eine sofortige Ausführung erfordern. Bitte überprüfen Sie die Hintergrundinformationen , um zu sehen, welche Lösung Ihren Anforderungen entspricht.
Beziehung zu anderen APIs
Koroutinen sind zwar die empfohlene Lösung für bestimmte Anwendungsfälle, nicht für dauerhafte Arbeit verwendet werden sollten. Es ist wichtig zu beachten, dass Koroutinen ist ein Nebenläufigkeits-Framework, während WorkManager eine Bibliothek für arbeiten. Ebenso solltest du WeckerManager nur für Uhren und Kalender verwenden.
API | Empfohlen für | Beziehung zum Arbeitsmanager |
---|---|---|
Coroutinen | Sämtliche asynchrone Arbeit, die nicht persistent sein muss. | Koroutinen sind die Standardmethode zum Verlassen des Hauptthreads in Kotlin. Nach dem Schließen der App bleiben sie jedoch im Gedächtnis. Verwenden Sie für hartnäckige Aufgaben den WorkManager. |
AlarmManager | Nur Wecker. | Anders als beim WorkManager kann AlarmManager den Stromsparmodus eines Geräts deaktivieren. Er ist daher in Bezug auf Energie- und Ressourcenverwaltung nicht effizient. Verwende sie nur für präzise Alarme oder Benachrichtigungen wie Kalendertermine – nicht für Hintergrundarbeiten. |
Verworfene APIs ersetzen
Die WorkManager API ist der empfohlene Ersatz für alle bisherigen Android-Versionen
Hintergrundplanungs-APIs, einschließlich FirebaseJobDispatcher
,
GcmNetworkManager
und JobScheduler
Erste Schritte
Lesen Sie den Startleitfaden zur Verwendung von WorkManager in Ihrem
Weitere Informationen
In den folgenden Abschnitten finden Sie einige zusätzliche Ressourcen.
Videos
- Videoreihe Workmanager – MAD Skills
- Working with WorkManager vom Android Dev Summit 2018
- WorkManager: Beyond the Fundamentals von Android Dev 2019 Gipfel