Aufgaben mit WorkManager planen Teil von Android Jetpack.
WorkManager ist die empfohlene Lösung für persistente Aufgaben. Die Arbeit bleibt erhalten, wenn sie auch nach App- und Systemneustarts geplant bleibt. Da die meisten Hintergrundverarbeitungen am besten durch persistente Aufgaben ausgeführt werden, ist WorkManager die primär empfohlene API für die Hintergrundverarbeitung.
Arten von dauerhaften Aufgaben
WorkManager verarbeitet drei Arten von persistenten Aufgaben:
- Sofort: Aufgaben, die sofort begonnen und bald abgeschlossen werden müssen. Kann beschleunigt werden.
- Langlaufend: Aufgaben, die länger laufen, möglicherweise länger als 10 Minuten.
- Verschiebbar: Geplante Aufgaben, die zu einem späteren Zeitpunkt beginnen und regelmäßig ausgeführt werden können.
Abbildung 1 zeigt, wie sich die verschiedenen Arten von dauerhafter Arbeit voneinander unterscheiden.
In der folgenden Tabelle werden die verschiedenen Arten von Arbeit beschrieben.
Typ | Periodizität | Zugriff |
---|---|---|
Sofort | Einmal | OneTimeWorkRequest und Worker .
Wenn Sie einen Express-Job benötigen, rufen Sie |
Lang andauernd | Einmalig oder regelmäßig | Beliebige WorkRequest oder Worker . Rufe setForeground() im Worker auf, um die Benachrichtigung zu verarbeiten.
|
Verschiebbar | Einmalig oder regelmäßig | PeriodicWorkRequest und Worker .
|
Weitere Informationen zum Einrichten von WorkManager finden Sie in der Anleitung WorkRequests definieren.
Funktionen
Neben einer einfacheren und einheitlicheren API bietet WorkManager noch eine Reihe weiterer Vorteile:
Arbeitseinschränkungen
Mit Arbeitsbeschränkungen können Sie die optimalen Bedingungen für die Ausführung Ihrer Arbeit deklarativ definieren. Sie können beispielsweise festlegen, dass die Übertragung nur ausgeführt wird, wenn sich das Gerät in einem unbegrenzten Netzwerk befindet, inaktiv ist oder der Akku ausreichend geladen ist.
Robuste Planung
Mit WorkManager können Sie Aufgaben planen, die einmal oder wiederholt ausgeführt werden sollen, und dabei flexible Planungsfenster verwenden. Aufgaben können auch getaggt und benannt werden, damit Sie eindeutige, austauschbare Aufgaben planen und Gruppen von Aufgaben gemeinsam überwachen oder abbrechen können.
Geplante Aufgaben werden in einer intern verwalteten SQLite-Datenbank gespeichert. WorkManager sorgt dafür, dass diese Aufgaben bei Neustarts des Geräts beibehalten und neu geplant werden.
Außerdem hält WorkManager Energiesparfunktionen und Best Practices wie den Ruhemodus ein, sodass Sie sich keine Sorgen machen müssen.
Express-Job
Mit WorkManager können Sie sofortige Aufgaben für die Ausführung im Hintergrund planen. Verwenden Sie Beschleunigte Arbeit für Aufgaben, die für den Nutzer wichtig sind und innerhalb weniger Minuten abgeschlossen werden.
Flexible Wiederholungsrichtlinie
Manchmal funktioniert die Arbeit nicht. WorkManager bietet flexible Wiederholungsrichtlinien, einschließlich einer konfigurierbaren Richtlinie für exponentiellen Backoff.
Aufgabenverkettung
Bei komplexen, zusammenhängenden Aufgaben können Sie einzelne Arbeitsaufgaben miteinander verknüpfen. Über eine intuitive Benutzeroberfläche können Sie festlegen, welche Teile sequenziell und welche parallel ausgeführt werden.
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();
Für jede Arbeitsaufgabe können Sie Eingabe- und Ausgabedaten für diese Aufgabe definieren. Wenn Sie Aufgaben verketten, gibt WorkManager die Ausgabedaten automatisch von einer Arbeitsaufgabe an die nächste weiter.
Integrierte Interoperabilität für Threads
WorkManager lässt sich nahtlos in Coroutines und RxJava integrieren und bietet die Flexibilität, eigene asynchrone APIs einzubinden.
WorkManager für zuverlässige Arbeit verwenden
WorkManager ist für Aufgaben gedacht, die zuverlässig ausgeführt werden müssen, auch wenn der Nutzer einen Bildschirm verlässt, die App beendet wird oder das Gerät neu gestartet wird. Beispiel:
- Protokolle oder Analysen an Backend-Dienste senden
- Anwendungsprozesse synchronisieren regelmäßig Anwendungsdaten mit einem Server.
WorkManager ist nicht für In-Process-Hintergrundarbeiten gedacht, die sicher beendet werden können, wenn der App-Prozess beendet wird. Es ist auch keine allgemeine Lösung für alle Aufgaben, die sofort ausgeführt werden müssen. In der Anleitung zur Hintergrundverarbeitung finden Sie Informationen dazu, welche Lösung Ihren Anforderungen entspricht.
Beziehung zu anderen APIs
Für bestimmte Anwendungsfälle sind coroutines die empfohlene Lösung, aber Sie sollten sie nicht für dauerhafte Aufgaben verwenden. Wichtig ist, dass coroutines ein Framework für die Parallelität ist, während WorkManager eine Bibliothek für persistente Aufgaben ist. Ebenso sollten Sie AlarmManager nur für Uhren oder Kalender verwenden.
API | Empfohlen für | Beziehung zu WorkManager |
---|---|---|
Coroutinen | Alle asynchronen Aufgaben, die nicht persistent sein müssen. | Coroutinen sind die Standardmethode, um den Hauptthread in Kotlin zu verlassen. Sie werden jedoch aus dem Arbeitsspeicher entfernt, sobald die App geschlossen wird. Verwenden Sie WorkManager für dauerhafte Aufgaben. |
AlarmManager | Nur Wecker. | Im Gegensatz zu WorkManager weckt AlarmManager ein Gerät aus dem Ruhemodus auf. Daher ist es in Bezug auf die Energie- und Ressourcenverwaltung nicht effizient. Verwenden Sie sie nur für genaue Wecker oder Benachrichtigungen wie Kalendertermine, nicht für Hintergrundaktivitäten. |
Verworfene APIs ersetzen
Die WorkManager API ist der empfohlene Ersatz für alle bisherigen Android-APIs für die Hintergrundausführung, einschließlich FirebaseJobDispatcher, GcmNetworkManager und Job Scheduler.
Erste Schritte
Lesen Sie den Einstiegsleitfaden, um WorkManager in Ihrer App zu verwenden.
Weitere Informationen
Weitere Informationen zu WorkManager
finden Sie in den folgenden Ressourcen.
Produktproben
Videos
- Workmanager – MAD Skills, Videoreihe
- WorkManager verwenden, vom Android Dev Summit 2018
- WorkManager: Mehr als nur die Grundlagen, vom Android Dev Summit 2019
Blogs
Empfehlungen für dich
- Hinweis: Der Linktext wird angezeigt, wenn JavaScript deaktiviert ist.
- App-Start