Aufgaben mit WorkManager planen   Teil von Android Jetpack.

WorkManager ist die empfohlene Lösung für persistente Aufgaben. Die Arbeit bleibt erhalten, wenn sie auch nach App- und Systemneustarts geplant bleibt. Da die meisten Hintergrundverarbeitungen am besten durch persistente Aufgaben ausgeführt werden, ist WorkManager die primär empfohlene API für die Hintergrundverarbeitung.

Arten von dauerhaften Aufgaben

WorkManager verarbeitet drei Arten von persistenten Aufgaben:

  • Sofort: Aufgaben, die sofort begonnen und bald abgeschlossen werden müssen. Kann beschleunigt werden.
  • Langlaufend: Aufgaben, die länger laufen, möglicherweise länger als 10 Minuten.
  • Verschiebbar: Geplante Aufgaben, die zu einem späteren Zeitpunkt beginnen und regelmäßig ausgeführt werden können.

Abbildung 1 zeigt, wie sich die verschiedenen Arten von dauerhafter Arbeit voneinander unterscheiden.

Dauerhafte Aufgaben können sofort ausgeführt, lang andauernd oder verschiebbar sein.
Abbildung 1: Arten von dauerhafter Arbeit

In der folgenden Tabelle werden die verschiedenen Arten von Arbeit beschrieben.

Typ Periodizität Zugriff
Sofort Einmal OneTimeWorkRequest und Worker.

Wenn Sie einen Express-Job benötigen, rufen Sie setExpedited() unter Ihrer OneTimeWorkRequest-Anfrage an.

Lang andauernd Einmalig oder regelmäßig Beliebige WorkRequest oder Worker. Rufe setForeground() im Worker auf, um die Benachrichtigung zu verarbeiten.
Verschiebbar Einmalig oder regelmäßig PeriodicWorkRequest und Worker.

Weitere Informationen zum Einrichten von WorkManager finden Sie in der Anleitung WorkRequests definieren.

Funktionen

Neben einer einfacheren und einheitlicheren API bietet WorkManager noch eine Reihe weiterer Vorteile:

Arbeitseinschränkungen

Mit Arbeitsbeschränkungen können Sie die optimalen Bedingungen für die Ausführung Ihrer Arbeit deklarativ definieren. Sie können beispielsweise festlegen, dass die Übertragung nur ausgeführt wird, wenn sich das Gerät in einem unbegrenzten Netzwerk befindet, inaktiv ist oder der Akku ausreichend geladen ist.

Robuste Planung

Mit WorkManager können Sie Aufgaben planen, die einmal oder wiederholt ausgeführt werden sollen, und dabei flexible Planungsfenster verwenden. Aufgaben können auch getaggt und benannt werden, damit Sie eindeutige, austauschbare Aufgaben planen und Gruppen von Aufgaben gemeinsam überwachen oder abbrechen können.

Geplante Aufgaben werden in einer intern verwalteten SQLite-Datenbank gespeichert. WorkManager sorgt dafür, dass diese Aufgaben bei Neustarts des Geräts beibehalten und neu geplant werden.

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 sofortige Aufgaben für die Ausführung im Hintergrund planen. Verwenden Sie Beschleunigte Arbeit für Aufgaben, die für den Nutzer wichtig sind und innerhalb weniger Minuten abgeschlossen werden.

Flexible Wiederholungsrichtlinie

Manchmal funktioniert die Arbeit nicht. WorkManager bietet flexible Wiederholungsrichtlinien, einschließlich einer konfigurierbaren Richtlinie für exponentiellen Backoff.

Aufgabenverkettung

Bei komplexen, zusammenhängenden Aufgaben können Sie einzelne Arbeitsaufgaben miteinander verknüpfen. Über eine intuitive Benutzeroberfläche können Sie festlegen, welche Teile 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 Eingabe- und Ausgabedaten für diese Aufgabe definieren. Wenn Sie Aufgaben verketten, gibt WorkManager die Ausgabedaten automatisch von einer Arbeitsaufgabe an die nächste weiter.

Integrierte Interoperabilität für Threads

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. Beispiel:

  • Protokolle oder Analysen an Backend-Dienste senden
  • Anwendungsprozesse synchronisieren regelmäßig 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 Aufgaben, die sofort ausgeführt werden müssen. In der Anleitung zur Hintergrundverarbeitung finden Sie Informationen dazu, welche Lösung Ihren Anforderungen entspricht.

Beziehung zu anderen APIs

Für bestimmte Anwendungsfälle sind coroutines die empfohlene Lösung, aber Sie sollten sie nicht für dauerhafte Aufgaben verwenden. Wichtig ist, dass coroutines ein Framework für die Parallelität ist, 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 Aufgaben, die nicht persistent sein müssen. Coroutinen sind die Standardmethode, um den Hauptthread in Kotlin zu verlassen. Sie werden jedoch aus dem Arbeitsspeicher entfernt, sobald die App geschlossen wird. Verwenden Sie WorkManager für dauerhafte Aufgaben.
AlarmManager Nur Wecker. Im Gegensatz zu WorkManager weckt AlarmManager ein Gerät aus dem Ruhemodus auf. Daher ist es in Bezug auf die Energie- und Ressourcenverwaltung nicht effizient. Verwenden Sie sie nur für genaue Wecker oder Benachrichtigungen wie Kalendertermine, nicht für Hintergrundaktivitäten.

Verworfene APIs ersetzen

Die WorkManager API ist der empfohlene Ersatz für alle bisherigen Android-APIs für die Hintergrundausführung, einschließlich FirebaseJobDispatcher, GcmNetworkManager und Job Scheduler.

Erste Schritte

Lesen Sie den Einstiegsleitfaden, um WorkManager in Ihrer App zu verwenden.

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