Aufgaben planen mit WorkManager Teil von Android Jetpack.
WorkManager ist eine API, die es einfach macht, aufschiebbare, asynchrone Aufgaben zu planen, die auch dann ausgeführt werden sollen, wenn die App beendet oder das Gerät neu gestartet wird. Die WorkManager-API ist ein geeigneter und empfohlener Ersatz für alle früheren Android-APIs für die Hintergrundplanung, einschließlich Firebase JobDispatcher, GcmNetworkManager und Job Scheduler. WorkManager vereint die Funktionen seiner Vorgänger in einer modernen, konsistenten API, die auf API-Level 14 zurückgreift und gleichzeitig auf die Akkulaufzeit achtet.
Unter der Haube verwendet WorkManager einen zugrundeliegenden Job-Dispatcher-Service, der auf den folgenden Kriterien basiert:
Hinweis: Wenn Ihre App auf Android 10 (API-Level 29) oder höher abzielt, werden IhreFirebaseJobDispatcher- und GcmNetworkManager-API-Aufrufe aufGeräten mit Android Marshmallow (6.0) und höher nicht mehr funktionieren. Folgen Sie den Migrationsanleitungen fürFirebaseJobDispatcherund GcmNetworkManager, um eine Anleitung für die Migration zu erhalten. Weitere Informationen zu ihrer Abschaffung finden Sie in der Ankündigung zu Unifying Background Task Scheduling onAndroid.
Features
Neben der Bereitstellung einer einfacheren und konsistenten API bietet WorkManager eine Reihe weiterer wichtiger Vorteile, darunter:
Work Constraints
Definieren Sie die optimalen Bedingungen für die Ausführung Ihrer Arbeit mithilfe von WorkConstraints.(z. B. nur ausführen, wenn das Gerät Wi-Fi ist, wenn das Gerät im Leerlauf ist oder wenn es über ausreichend Speicherplatz verfügt usw.)
Robust Scheduling
WorkManager ermöglicht es Ihnen, Arbeit so zu planen, dass sie einmalig oder wiederholt unter Verwendung flexibler Planungsfenster ausgeführt wird. Die Arbeit kann auch gekennzeichnet und benannt werden, so dass Sie eindeutige, austauschbare Arbeiten einplanen und Gruppen von Arbeiten gemeinsam überwachen oder stornieren können. Geplante Arbeiten werden in einer intern verwalteten SQLite-Datenbank gespeichert, und WorkManager sorgt dafür, dass diese Arbeiten auch nach einem Neustart des Geräts erhalten bleiben und neu geplant werden. Darüber hinaus hält sich WorkManager an energiesparende Funktionen und Best Practices wie den Doze-Modus, so dass Sie sich darüber keine Gedanken machen müssen.
Flexible Wiederholungsrichtlinie
Manchmal schlägt die Arbeit fehl. WorkManager bietet flexible Wiederholungsrichtlinien, einschließlich einer konfigurierbaren exponentiellen Backoff-Politik.
Work Chaining
Für komplexe, zusammenhängende Arbeiten können Sie einzelne Arbeitsaufgaben über eine flüssige, natürliche Schnittstelle miteinander verketten, die es Ihnen ermöglicht, zu steuern, welche Teile nacheinander und welche parallel laufen.
Kotlin
WorkManager.getInstance(...) .beginWith(listOf(workA,workB)) .then(workC) .enqueue()
Java
WorkManager.getInstance(...) .beginWith(Arrays.asList(workA, workB)) .then(workC) .enqueue();
Für jede Arbeitsaufgabe können Sie Eingabe- und Ausgabedaten für diese Arbeit definieren. Bei der Verkettung von Arbeiten gibt WorkManager die Ausgabedaten automatisch von einer Arbeitsaufgabe an die nächste weiter.
Eingebaute Threading-Interoperabilität
WorkManager lässt sich nahtlos in RxJava und Coroutines integrieren und bietet die Flexibilität, eigene asynchrone APIs einzubinden.
Verwenden Sie WorkManager für aufschiebbare und zuverlässige Arbeit
WorkManager ist für Arbeit gedacht, die aufschiebbar ist, d. h. nicht sofort ausgeführt werden muss, und die auch dann zuverlässig ausgeführt werden muss, wenn die Anwendung beendet oder das Gerät neu gestartet wird. Zum Beispiel:
- Senden von Protokollen oder Analysen an Backend-Dienste
- Periodisches Synchronisieren von Anwendungsdaten mit einem Server
WorkManager ist nicht für prozessinterne Hintergrundarbeit gedacht, die sicher beendet werden kann, wenn der App-Prozess beendet wird, oder für Arbeit, die sofort ausgeführt werden muss. Bitte lesen Sie den Leitfaden zur Hintergrundverarbeitung, um herauszufinden, welche Lösung Ihren Anforderungen entspricht.
Einführung
Schauen Sie sich den Leitfaden zur Einführung an, um mit der Verwendung vonWorkManager in Ihrer Anwendung zu beginnen.