Aufgaben mit WorkManager planen Teil von Android Jetpack.
WorkManager ist die empfohlene Lösung für persistente Aufgaben. Arbeit ist persistent, wenn sie auch nach Neustarts von Apps und des Systems geplant bleibt. Da die meisten Hintergrundprozesse am besten mit persistenten Aufgaben ausgeführt werden, ist WorkManager die primäre empfohlene API für die Hintergrundverarbeitung.
Arten von persistenten Aufgaben
WorkManager verarbeitet drei Arten von persistenten Aufgaben:
- Sofort: Aufgaben, die sofort beginnen und bald abgeschlossen werden müssen. Kann beschleunigt werden.
- Lange Ausführung: Aufgaben, die länger als 10 Minuten dauern können.
- Aufschiebbar: Geplante Aufgaben, die zu einem späteren Zeitpunkt gestartet werden und regelmäßig ausgeführt werden können.
Abbildung 1 zeigt, wie die verschiedenen Arten von dauerhaften Arbeiten zusammenhängen.
In der folgenden Tabelle sind die verschiedenen Arten von Arbeit aufgeführt.
Typ | Regelmäßigkeit | Zugriff |
---|---|---|
Sofort | Einmal | OneTimeWorkRequest und Worker .
Bei Express-Jobs rufen Sie |
Lange Ausführungszeit | Einmalig oder regelmäßig | Beliebige WorkRequest oder Worker . Rufen Sie setForeground() im Worker auf, um die Benachrichtigung zu verarbeiten.
|
Deferrable | Einmalig oder regelmäßig | PeriodicWorkRequest und Worker .
|
Weitere Informationen zum Einrichten von WorkManager finden Sie im Leitfaden WorkRequests definieren.
Funktionen
WorkManager bietet nicht nur eine einfachere und einheitlichere API, sondern auch eine Reihe weiterer wichtiger Vorteile:
Arbeitseinschränkungen
Definieren Sie die optimalen Bedingungen für die Ausführung Ihrer Arbeit deklarativ mithilfe von Arbeitsbeschränkungen. Sie können beispielsweise festlegen, dass die Synchronisierung nur ausgeführt wird, wenn das Gerät mit einem Netzwerk mit unbegrenztem Datenvolumen verbunden ist, wenn das Gerät inaktiv ist oder wenn der Akku ausreichend geladen ist.
Robuste Planung
Mit WorkManager können Sie Arbeit planen, die einmalig oder wiederholt in flexiblen Zeitfenstern ausgeführt werden soll. Arbeiten können auch getaggt und benannt werden. So können Sie einzigartige, austauschbare Arbeiten planen und Gruppen von Arbeiten gemeinsam überwachen oder abbrechen.
Geplante Aufgaben werden in einer intern verwalteten SQLite-Datenbank gespeichert. WorkManager sorgt dafür, dass diese Aufgaben beibehalten und nach einem Neustart des Geräts neu geplant werden.
Außerdem werden in WorkManager Energiesparfunktionen und Best Practices wie der Doze-Modus berücksichtigt.
Express-Job
Mit WorkManager können Sie sofortige Aufgaben für die Ausführung im Hintergrund planen. Verwenden Sie Expedited work für Aufgaben, die für den Nutzer wichtig sind und innerhalb weniger Minuten abgeschlossen werden.
Flexible Wiederholungsrichtlinie
Manchmal schlägt die Arbeit fehl. WorkManager bietet flexible Wiederholungsrichtlinien, einschließlich einer konfigurierbaren Richtlinie für exponentiellen Backoff.
Verkettung von Aufgaben
Bei komplexen zusammenhängenden Aufgaben können Sie einzelne Arbeitsaufgaben verketten. Dazu steht eine intuitive Benutzeroberfläche zur Verfügung, mit der Sie steuern können, welche Aufgaben 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 Ein- und Ausgabedaten definieren. Wenn Sie Arbeitsaufgaben verketten, übergibt WorkManager automatisch Ausgabedaten von einer Arbeitsaufgabe an die nächste.
Integrierte Interoperabilität für Threads
WorkManager lässt sich nahtlos in Coroutines und RxJava einbinden und bietet die Flexibilität, eigene asynchrone APIs einzubinden.
WorkManager für zuverlässige Aufgaben verwenden
WorkManager ist für Aufgaben vorgesehen, 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:
- Senden von Logs oder Analysen an Backend-Dienste.
- Anwendungsdaten werden regelmäßig mit einem Server synchronisiert.
WorkManager ist nicht für die Hintergrundarbeit im Prozess vorgesehen, die sicher beendet werden kann, wenn der App-Prozess beendet wird. Es ist auch keine allgemeine Lösung für alle Aufgaben, die sofort ausgeführt werden müssen. Im Leitfaden zur Hintergrundverarbeitung finden Sie Informationen dazu, welche Lösung Ihren Anforderungen entspricht.
Beziehung zu anderen APIs
Obwohl Coroutinen für bestimmte Anwendungsfälle die empfohlene Lösung sind, sollten Sie sie nicht für dauerhafte Aufgaben verwenden. Es ist wichtig zu beachten, dass Coroutinen ein Framework für die Nebenläufigkeit sind, 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 Vorgänge, die nicht persistent sein müssen. | Coroutinen sind die Standardmethode, um den Hauptthread in Kotlin zu verlassen. Sie belegen jedoch Speicherplatz, wenn die App geschlossen wird. Verwenden Sie WorkManager für persistente Aufgaben. |
AlarmManager | Nur Wecker. | Im Gegensatz zu WorkManager kann AlarmManager ein Gerät aus dem Inaktivmodus wecken. Daher ist es in Bezug auf Energie- und Ressourcenmanagement nicht effizient. Verwenden Sie sie nur für genaue Alarme oder Benachrichtigungen wie Kalendertermine, nicht für Hintergrundaufgaben. |
Eingestellte APIs ersetzen
Die WorkManager API ist der empfohlene Ersatz für frühere Android-APIs für die Hintergrundplanung, einschließlich FirebaseJobDispatcher
und GcmNetworkManager
.
Erste Schritte
Im Startleitfaden erfahren Sie, wie Sie WorkManager in Ihrer App verwenden.
Zusätzliche Ressourcen
Weitere Informationen zu WorkManager
finden Sie in den folgenden Ressourcen.
Produktproben
Videos
- Workmanager – MAD Skills, Videoreihe
- Mit WorkManager arbeiten, vom Android Dev Summit 2018
- WorkManager: Beyond the basics vom Android Dev Summit 2019
Blogs
Empfehlungen für dich
- Hinweis: Linktext wird angezeigt, wenn JavaScript deaktiviert ist.
- App-Start