Aufgaben mit WorkManager planen Teil von Android Jetpack

WorkManager ist die empfohlene Lösung für dauerhafte Arbeit. Die Arbeit bleibt dauerhaft, wenn sie durch Anwendungsneustarts und Systemneustarts geplant bleibt. Da die meiste Verarbeitung im Hintergrund durch hartnäckige Arbeit erfolgt, ist WorkManager die primär empfohlene API für die Hintergrundverarbeitung.

Arten von dauerhafter Arbeit

WorkManager übernimmt drei Arten von dauerhafter Arbeit:

  • Sofort: Aufgaben, die sofort beginnen und bald abgeschlossen werden müssen. Kann beschleunigt werden.
  • Lange Ausführung: Aufgaben, die länger, möglicherweise länger als 10 Minuten ausgeführt werden.
  • Zurückgestellt: Geplante Aufgaben, die zu einem späteren Zeitpunkt beginnen und regelmäßig ausgeführt werden.

In Abbildung 1 ist dargestellt, wie die verschiedenen Arten von persistenter Arbeit zueinander in Beziehung stehen.

Beharrliche Arbeit kann sofort, lang andauern oder aufgeschoben werden.
Abbildung 1: Arten persistenter Arbeit.

Ebenso werden in der folgenden Tabelle die verschiedenen Arten von Arbeiten beschrieben.

Typ Regelmäßigkeit Zugriff
Sofort Einmalig OneTimeWorkRequest und Worker.

Wenn es um einen beschleunigten Vorgang geht, rufen Sie über Ihre OneTimeWorkRequest unter setExpedited() an.

Langfristig Einmal oder regelmäßig Beliebige WorkRequest oder Worker. Rufen Sie setForeground() im Worker auf, um die Benachrichtigung zu verarbeiten.
Kann zurückgestellt werden Einmal oder regelmäßig PeriodicWorkRequest und Worker.

Weitere Informationen zum Einrichten von WorkManager finden Sie im Leitfaden WorkRequests definieren.

Funktionen

Neben der einfacheren und konsistenteren API bietet WorkManager noch eine Reihe weiterer wichtiger Vorteile:

Arbeitsbedingte Einschränkungen

Mithilfe von Arbeitseinschränkungen die optimalen Bedingungen für die Ausführung Ihrer Arbeit deklarativ definieren. Das Gerät wird beispielsweise nur ausgeführt, wenn es sich in einem kostenlosen Netzwerk befindet, wenn es inaktiv ist oder wenn der Akku ausreichend geladen ist.

Robuste Terminplanung

Mit WorkManager können Sie Aufgaben planen, die einmalig oder wiederholt in flexiblen Planungsfenstern ausgeführt werden. Arbeiten können ebenfalls getaggt und benannt werden, sodass Sie eindeutige, austauschbare Arbeiten planen und die Zusammenarbeit von Gruppen überwachen oder abbrechen können.

Geplante Arbeiten werden in einer intern verwalteten SQLite-Datenbank gespeichert. WorkManager sorgt dafür, dass diese Arbeit erhalten bleibt und bei Geräteneustarts neu geplant wird.

Darüber hinaus befolgt WorkManager die Energiesparfunktionen und Best Practices wie den Stromsparmodus, sodass Sie sich nicht darum kümmern müssen.

Expressarbeiten

Mit WorkManager können Sie sofort Arbeiten planen, die im Hintergrund ausgeführt werden sollen. Sie sollten Express-Arbeit für Aufgaben verwenden, 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 exponentiellen Backoff-Richtlinie.

Arbeitsverkettung

Bei komplexen Arbeiten können Sie über eine intuitive Benutzeroberfläche einzelne Arbeitsaufgaben miteinander verketten. So können Sie steuern, welche Teile nacheinander 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();

Sie können für jede Arbeitsaufgabe Eingabe- und Ausgabedaten dafür definieren. Beim Verketten von Arbeiten übergibt WorkManager automatisch die Ausgabedaten von einer Arbeitsaufgabe an die nächste.

Integrierte Threading-Interoperabilität

WorkManager lässt sich nahtlos in Coroutinen und RxJava einbinden und bietet die Flexibilität, eigene asynchrone APIs einzubinden.

WorkManager für zuverlässiges Arbeiten

WorkManager ist für Aufgaben gedacht, bei denen zuverlässig ausgeführt werden muss, selbst wenn der Nutzer einen Bildschirm verlässt, die App beendet oder das Gerät neu gestartet wird. Beispiel:

  • Senden von Logs oder Analysen an Back-End-Dienste
  • Regelmäßige Synchronisierung von Anwendungsdaten mit einem Server

WorkManager ist nicht für laufende Hintergrundarbeiten gedacht, die bei Beendigung des Anwendungsprozesses sicher beendet werden können. Es ist auch keine allgemeine Lösung für alle Arbeiten, die sofort ausgeführt werden müssen. In der Anleitung zur Hintergrundverarbeitung erfahren Sie, welche Lösung Ihren Anforderungen entspricht.

Beziehung zu anderen APIs

Koroutinen sind die empfohlene Lösung für bestimmte Anwendungsfälle, sie sollten jedoch nicht für dauerhafte Arbeiten verwendet werden. Dabei ist zu beachten, dass Koroutinen ein Framework für die Gleichzeitigkeit sind, während WorkManager eine Bibliothek für persistente Arbeit ist. Daher solltest du den AlarmManager nur für Uhren oder Kalender verwenden.

API Empfohlen für Beziehung zum WorkManager
Koroutinen Jede asynchrone Arbeit, die nicht dauerhaft sein muss. Koroutinen sind die Standardmethode zum Verlassen des Hauptthreads in Kotlin. Sobald die App geschlossen ist, hinterlassen sie jedoch Erinnerungen. Verwenden Sie für dauerhafte Arbeit WorkManager.
AlarmManager Nur Wecker. Anders als beim WorkManager wird der Stromsparmodus eines Geräts durch AlarmManager aktiviert. Es ist daher in Bezug auf Energie- und Ressourcenmanagement nicht effizient. Verwende sie nur für präzise Alarme oder Benachrichtigungen wie Kalendertermine, nicht für Hintergrundarbeiten.

Veraltete APIs ersetzen

Die WorkManager API ist der empfohlene Ersatz für alle bisherigen Android-APIs zur Planung im Hintergrund, einschließlich FirebaseJobDispatcher, GcmNetworkManager und Job Scheduler.

Erste Schritte

Informationen zur Verwendung von WorkManager in Ihrer App finden Sie im Startleitfaden.

Weitere Informationen

Weitere Informationen zu WorkManager finden Sie in den folgenden Ressourcen.

Produktproben

Videos

Blogs

  • Hinweis: Der Linktext wird angezeigt, wenn JavaScript deaktiviert ist.
  • App-Start