Dauerhafte Arbeit Teil von Android Jetpack

Die Arbeit bleibt bestehen, wenn sie durch App-Neustarts und Systemstart geplant wird neu gestartet. WorkManager ist die empfohlene Lösung für hartnäckige Arbeit. Da die meisten Hintergrundverarbeitungen am besten durch harte Arbeit erreicht werden, Daher ist WorkManager auch die primäre empfohlene API für den Hintergrund. im Allgemeinen verarbeitet werden.

Arten persistenter Arbeit

WorkManager behandelt drei Arten von dauerhafter Arbeit:

  • Sofort: Aufgaben, die sofort beginnen und bald abgeschlossen werden müssen. Kann sein beschleunigt werden.
  • Lang andauern: 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.

<ph type="x-smartling-placeholder">
</ph> 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.

WorkManager-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 getaggt und benannt werden Darüber hinaus können Sie einmalige, auswechselbare Arbeiten planen Gruppen von Zusammenarbeiten.

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.

Darüber hinaus hält WorkManager sich an energiesparende Funktionen und Best Practices. wie dem Stromsparmodus, sodass Sie sich darüber keine Gedanken machen müssen.

Schnelle Arbeit

Mit WorkManager können Sie die sofortige Ausführung von Arbeiten im Hintergrund. Für Aufgaben, die wichtig sind, sollten Sie Beschleunigte Aufgaben verwenden. die innerhalb weniger Minuten abgeschlossen werden.

Flexible Wiederholungsrichtlinie

Manchmal scheitert die Arbeit. WorkManager bietet flexible Wiederholungsrichtlinien, darunter: eine konfigurierbare exponentielle Backoff-Richtlinie

Verkettung der Arbeit

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) {
            workRequestS<aveImageToGalleryWorker(>tag = Constants.TAG_OUTPUT)
        } else /* upload */ {
            workRequestU<ploadWorker(>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 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 einbinden. und bietet die Flexibilität, eigene asynchrone APIs einzustecken.

Zuverlässige Arbeit mit WorkManager

WorkManager ist für Aufgaben gedacht, die eine zuverlässige Ausführung erfordern, auch wenn wenn Nutzende einen Bildschirm verlassen, die App beendet oder das Gerät neu gestartet wird. Für Beispiel:

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

WorkManager ist nicht für in Bearbeitung befindliche Hintergrundarbeiten gedacht, die 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 dauerhafte Arbeit verwendet werden sollten. Es ist wichtig zu beachten, dass Koroutinen ist ein Nebenläufigkeits-Framework, während WorkManager eine Bibliothek für arbeiten. Ebenso solltest du WeckerManager nur für Uhren und Kalender verwenden.

API Empfohlen für Beziehung zum Arbeitsmanager
Coroutinen Sämtliche asynchrone Arbeit, die nicht persistent sein muss. Koroutinen sind die Standardmethode zum Verlassen des Hauptthreads in Kotlin. 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 JobScheduler

Erste Schritte

Lesen Sie den Startleitfaden zur Verwendung von WorkManager in Ihrem

Weitere Informationen

In den folgenden Abschnitten finden Sie einige zusätzliche Ressourcen.

Videos

Blogs

Produktproben