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.

Dauerhafte Arbeit kann unmittelbar, lang andauern oder zurückgestellt werden.
Abbildung 1: Arten persistenter Arbeit

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 setExpedited() an.

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

Blogs

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