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.
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 |
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.
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)
}
)
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
Sie können mehrere Links in einem einzigen Textstring unterstützen, um Nutzern Optionen zu bieten und die Interaktion zu steigern. Sie können Textteile formatieren, um die Lesbarkeit zu verbessern, die Nutzerfreundlichkeit zu erhöhen und durch die Verwendung von Farben und Schriftarten mehr Kreativität zu fördern. Sie können die Eingabe validieren, während der Nutzer einen Text in ein Textfeld eingibt, z. B. einen Namen, eine E-Mail-Adresse, eine Adresse oder andere Kontaktdaten. Durch diese Validierung werden Fehler reduziert und Ihre Nutzer sparen Zeit. Wenn Sie Bilder in Ihrer App für Inhalte und als Reaktion auf Nutzeraktionen anzeigen möchten, laden Sie die Bilder von der Festplatte oder aus einer externen Quelle im Internet. Eine Karte bietet einen Material Design-Container für Ihre Benutzeroberfläche. Mit dem Composeable „TopAppBar“ können Sie eine obere App-Leiste erstellen, die Nutzern bei der Navigation und beim Zugriff auf Funktionen in Ihrer App hilft. Hier erfahren Sie, wie Sie mithilfe der Compose-Animations-APIs Statuswerte animieren, Übergänge verwenden, Sichtbarkeits- oder Größenänderungen animieren und Überblendungen erstellen. Sie können ein Symbol erstellen, um ein Passwort basierend auf einem Nutzer-Schalter auszublenden oder anzuzeigen, um die Sicherheit zu verbessern und die Nutzerfreundlichkeit zu erhöhen. Eine App-Leiste ist ein Container oben oder unten auf dem Bildschirm, der wichtige Funktionen und Navigationselemente enthält. Eine Fortschrittsanzeige zeigt den Status eines Vorgangs an. Informationen zum Verwalten von Änderungen an der Konfiguration der abnehmbaren Tastatur Sie können die Nutzerfreundlichkeit Ihrer App verbessern, indem Sie eine drawable-Datei laden, um animierte Bilder anzuzeigen. Animierte Bilder eignen sich zum Erstellen von Lade-, Erfolgs- oder Fehlersymbolen, zur Unterstützung der Spieleentwicklung und für verschiedene andere UI-Funktionen. Mit einem Ein-/Aus-Schalter können Nutzer zwischen zwei Status wählen. Die App-Ausrichtung auf kleinen Bildschirmen einschränken, aber nicht auf großen Bildschirmen. Erstellen Sie eine Paginierungsliste, damit Nutzer scrollen können, um auf Inhalte zuzugreifen, die zu groß sind, um auf einem einzigen Bildschirm angezeigt zu werden. Listen mit horizontaler Paginierung können Nutzern helfen, Inhalte wie Bilder, Diashows oder Produktkarussells zu durchsuchen. Vertikale Listen sind nützlich für Apps mit vielen Inhalten, in denen Nutzer möglicherweise durch eine große Anzahl von Elementen wie Artikeln scrollen müssen. Sie können Schatten um den zugeschnittenen Bereich des Bildes zeichnen, um ein Bild in Form eines Clips anzuzeigen. Eine Chipkomponente stellt komplexe Entitäten visuell dar, oft mit einem Symbol und einem Label. Eine Schaltfläche löst eine bestimmte Aktion aus. Wählen Sie die richtige Komponente für Ihre Benutzeroberfläche aus und erfahren Sie, wie Sie sie in Ihrer App implementieren. Erste Jetpack Compose-Tests erstellen Hier erfahren Sie, wie Sie die Testartefakte von Compose verwenden, um UI-Tests zu schreiben, Testregeln, Sucher und Behauptungen zu verwenden. Mit einer solchen Schaltfläche können Nutzer eine primäre Aktion in der App ausführen. Verhindert versehentliche Berührungen des Touchstifts mit der Handfläche. In Dialogen werden Pop-up-Nachrichten angezeigt oder Nutzer werden auf einer Ebene über dem Hauptinhalt der App um Eingaben gebeten. Hier erfahren Sie, wie Sie komplexe Designs für Ihre Compose-Layouts erstellen. Dabei liegt der Schwerpunkt auf der Layoutphase und -einschränkungen, untergeordneten Compose-Layouts und intrinsischen Maßen.Unterstützung mehrerer Links in einem einzigen Textstring
Textteile formatieren
Eingaben während der Eingabe validieren
Bilder laden und anzeigen
Karte als Container erstellen
Obere App-Leiste anzeigen
Animation in Compose
Passwort je nach Nutzerauswahl ein- oder ausblenden
App-Leiste anzeigen
Fortschrittsanzeige erstellen
Änderungen an der Konfiguration der abnehmbaren Tastatur verwalten
Animiertes Bild anzeigen
Ein-/Aus-Schalter hinzufügen
App-Ausrichtung auf Smartphones, aber nicht auf Geräten mit großen Displays einschränken
Eine Auslagerungsliste anzeigen
Ein Bild anzeigen, das in eine Form zugeschnitten ist
Chip zum Darstellen komplexer Entitäten erstellen
Schaltfläche erstellen
Interaktive Komponenten anzeigen
In Compose testen
Unverankerte Aktionsschaltfläche erstellen
Eingabestift-Berührungen der Handfläche ablehnen
Pop-up-Nachrichten oder Aufforderungen zur Nutzereingabe anzeigen
Erweiterte Layouts im Fenster „Schreiben“
Videos
- Workmanager – MAD Skills, Videoreihe
- WorkManager verwenden, vom Android Dev Summit 2018
- WorkManager: Mehr als nur die Grundlagen, vom Android Dev Summit 2019
Blogs
Derzeit liegen keine Empfehlungen vor.
Versuchen Sie, sich bei Ihrem Google-Konto anzumelden.