Aufgaben mit WorkManager planen Teil von Android Jetpack
WorkManager ist die empfohlene Lösung für persistente Aufgaben. Arbeit ist dauerhaft, wenn er durch App- und Systemneustarts geplant bleibt. Da die meisten Hintergrundverarbeitungen am besten durch harte Arbeit erreicht werden, WorkManager ist die primär empfohlene API für die Verarbeitung im Hintergrund.
Arten persistenter Arbeit
WorkManager verarbeitet drei Arten von persistenten Aufgaben:
- Sofort: Aufgaben, die sofort beginnen und bald abgeschlossen werden müssen. Kann beschleunigt werden.
- Lang andauernde Aufgaben: 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.
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 |
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.
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 auch getaggt und benannt werden, damit Sie eindeutige, austauschbare Aufgaben planen und Gruppen von Aufgaben gemeinsam überwachen oder abbrechen können.
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.
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 die sofortige Ausführung von Arbeiten im Hintergrund. Für Aufgaben, die wichtig sind, sollten Sie Beschleunigte Aufgaben verwenden. und die innerhalb weniger Minuten abgeschlossen werden.
Flexible Wiederholungsrichtlinie
Manchmal scheitert die Arbeit. WorkManager bietet flexible Wiederholungsrichtlinien, darunter: eine konfigurierbare exponentielle Backoff-Richtlinie
Aufgabenverkettung
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();
Für jede Arbeitsaufgabe können Sie Eingabe- und Ausgabedaten für diese Arbeit 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 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. Für Beispiel:
- Protokolle oder Analysen an Backend-Dienste senden
- Regelmäßige Synchronisierung von 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 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 beständige Arbeit. Es ist wichtig zu beachten, dass Koroutinen Parallelitäts-Framework, während WorkManager eine Bibliothek für harte Arbeit ist. Ebenso solltest du WeckerManager nur für Uhren und Kalender verwenden.
API | Empfohlen für | Beziehung zum Arbeitsmanager |
---|---|---|
Coroutinen | Alle asynchronen Aufgaben, die nicht persistent sein müssen. | Coroutinen sind die Standardmethode, um den Hauptthread in Kotlin zu verlassen. 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 Job Scheduler.
Erste Schritte
Lesen Sie den Startleitfaden zur Verwendung von WorkManager in Ihrem
Weitere Informationen
Weitere Informationen zu WorkManager
finden Sie hier:
Ressourcen.
Produktproben
Videos
- Videoreihe Workmanager – MAD Skills
- Working with WorkManager vom Android Dev Summit 2018
- WorkManager: Beyond the Fundamentals vom Android Dev Summit 2019
Blogs
Empfehlungen für dich
- Hinweis: Der Linktext wird angezeigt, wenn JavaScript deaktiviert ist.
- App-Start