Articles

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:

If the device is running on API Level 23 or higher, JobScheduler is used. OnAPI Levels 14-22, GcmNetworkManager is chosen if it's available, otherwise, acustom AlarmManager and BroadcastReciever implementation is used as afallback.

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.