WorkManager

Mit der WorkManager API lassen sich aufschiebbare, asynchrone Aufgaben, die zuverlässig ausgeführt werden müssen, ganz einfach planen. Mit diesen APIs können Sie eine Aufgabe erstellen und an WorkManager übergeben, damit sie ausgeführt wird, wenn die Arbeitsbedingungen erfüllt sind.
Letzte Aktualisierung Stabile Release Releasekandidat Beta-Release Alpha-Release
23. September 2026 2.12.0 - - -

Abhängigkeiten deklarieren

Wenn Sie eine Abhängigkeit von WorkManager hinzufügen möchten, müssen Sie Ihrem Projekt das Google Maven-Repository hinzufügen:

Fügen Sie die Abhängigkeiten für die benötigten Artefakte in der Datei build.gradle für Ihre App oder Ihr Modul hinzu:

Groovy

dependencies {
    def work_version = "2.12.0"

    // (Java only)
    implementation "androidx.work:work-runtime:$work_version"

    // Kotlin + coroutines
    implementation "androidx.work:work-runtime-ktx:$work_version"

    // optional - RxJava2 support
    implementation "androidx.work:work-rxjava2:$work_version"

    // optional - GCMNetworkManager support
    implementation "androidx.work:work-gcm:$work_version"

    // optional - Test helpers
    androidTestImplementation "androidx.work:work-testing:$work_version"

    // optional - Multiprocess support
    implementation "androidx.work:work-multiprocess:$work_version"
}

Kotlin

dependencies {
    val work_version = "2.12.0"

    // (Java only)
    implementation("androidx.work:work-runtime:$work_version")

    // Kotlin + coroutines
    implementation("androidx.work:work-runtime-ktx:$work_version")

    // optional - RxJava2 support
    implementation("androidx.work:work-rxjava2:$work_version")

    // optional - GCMNetworkManager support
    implementation("androidx.work:work-gcm:$work_version")

    // optional - Test helpers
    androidTestImplementation("androidx.work:work-testing:$work_version")

    // optional - Multiprocess support
    implementation("androidx.work:work-multiprocess:$work_version")
}

Informationen zur Verwendung von Kotlin-Erweiterungen finden Sie in der KTX-Dokumentation.

Weitere Informationen zu Abhängigkeiten finden Sie unter Build-Abhängigkeiten hinzufügen.

Feedback

Ihr Feedback hilft uns, Jetpack zu verbessern. Wenn Sie neue Probleme entdecken oder Ideen zur Verbesserung dieser Bibliothek haben, lassen Sie es uns wissen. Bevor Sie ein neues Problem erstellen, sollten Sie sich jedoch die bereits gemeldeten Probleme in dieser Bibliothek ansehen. Wenn Sie sich einer Problemmeldung anschließen möchten, klicken Sie auf den Button mit dem Stern.

Neues Problem melden

Weitere Informationen finden Sie in der Dokumentation zum Issue Tracker.

Version 2.12

Version 2.12.0

23. September 2026

androidx.work:work-*:2.12.0 ist veröffentlicht. Version 2.12.0 enthält diese Commits.

Wichtige Änderungen seit Version 2.11.0:

  • Die minSdk wurde von API 23 auf API 24 aktualisiert.
  • Ein neues Artefakt, androidx.work:work-analytics, enthält experimentelle Work Metrics APIs zum Prüfen des Ausführungsverlaufs Ihrer Arbeit. WorkMetricsInfoRepository erfasst WorkMetricsInfo pro Arbeitsereignis-Zeitstempel, Worker-Dauer, kumulative Gesamtlaufzeit und Aufschlüsselung der Ausführungsversuche. Messwerte können über konfigurierbare Abfragen abgerufen oder als Flow abgeschlossener Arbeit beobachtet werden. Für diese APIs ist die Einwilligung in @ExperimentalWorkMetricsApi erforderlich.
  • Mit neuen experimentellen Event-Listener-APIs können Sie die Ausführung und Planung von WorkManager direkt beobachten. Configuration.Builder akzeptiert jetzt einen Listener für Worker-Ausführungsereignisse (Start, Abschluss, Stopp und nicht abgefangene Ausnahmen) und einen Listener für Planungsereignisse (Warteschlange, Entsperrung, Aktualisierung, Abbrechen und fehlgeschlagene Voraussetzungen). Das sind die Bausteine, auf denen work-analytics basiert.

Version 2.12.0-rc01

12. August 2026

androidx.work:work-*:2.12.0-rc01 ist veröffentlicht. Version 2.12.0-rc01 enthält diese Commits.

Fehlerkorrekturen

  • Tippfehler in der Klasse WorkConstraintsDaoTest und im Dateinamen behoben. (I0868d)
  • Die Sperrenkonflikte in PackageManagerService während des Starts von WorkManager wurden reduziert, indem die Standardaktivierungsstatus von Komponentenmanifesten in PackageManagerHelper abgefragt und im Cache gespeichert wurden. (Id84ba, b/528755807)
  • Ein Problem wurde behoben, bei dem das Aufrufen von WorkManager.updateWork während der Ausführung eines Workers dazu führte, dass die Hooks für Ausführungs-Lifecycle-Ereignisse und die Telemetrie-Erfassung sofort auf die Generation nach der Aktualisierung umgestellt wurden. (Ie80e8, b/511074795)

Version 2.12.0-beta01

29. Juli 2026

androidx.work:work-*:2.12.0-beta01 ist veröffentlicht. Version 2.12.0-beta01 enthält diese Commits.

Fehlerkorrekturen

  • Speicherleck beim Abfangen von Executor-Ausnahmen behoben (I3404e, b/532588487)
  • Die Weitergabe von Abbrüchen für RemoteListenableWorker wurde verbessert. Systeminitiierte Worker-Stopps brechen Remote-Coroutinen ordnungsgemäß ab und planen die Arbeit neu. Bei selbst abgebrochenen Remote-Workern wird die Arbeit korrekt als FAILED markiert. Hinweis: Dieses Verhalten ist derzeit durch das Flag Configuration.isRemoteCancellationPropagationFixEnabled für eingeschränkte Bibliotheksgruppen (Standardwert: „false“) eingeschränkt, damit experimentelle Tests möglich sind und die Zuverlässigkeitsmesswerte stabil bleiben, bevor das Flag dauerhaft entfernt wird. (I387f3, b/420724435)

Version 2.12.0-alpha01

15. Juli 2026

androidx.work:work-*:2.12.0-alpha01 ist veröffentlicht. Version 2.12.0-alpha01 enthält diese Commits.

API-Änderungen

  • Die WorkMetricsQuery API wurde hinzugefügt, um Messwertinformationen zu filtern (I132b4, b/522338412).
  • Implementieren Sie workerDurationMillis und totalRuntimeMillis in WorkMetricsInfo, um die Ausführungsdauer des Workers und die kumulative Gesamtlaufzeit zu erfassen. (I57f65, b/507212208)
  • retentionDuration (Dauer, API 26+) und retentionTime/retentionTimeUnit (API 23+) wurden als Konstruktoren für WorkMetricsInfoRepository hinzugefügt, um das Entfernen alter Messwerte zu ermöglichen. Die Standardeinstellung ist 7 Tage. (Ifdf2e, b/522338412)
  • Flow-API für abgeschlossene WorkMetricsInfo hinzufügen (I11ec2, b/507212999)
  • Fehlende experimentelle Annotation für work-analytics-Klassen hinzugefügt (I1a055, b/528112001)
  • androidx.benchmark hat jetzt einen minSdk von 24. (Ic2a85)
  • Implementieren Sie stopReasonCounts, explicitRetryCount und runAttemptCount in WorkMetricsInfo. (I95498, b/507212225)
  • Implementieren Sie die WorkMetricsInfo-APIs und das Datenbankschema, um den Verlauf der Arbeitsausführung zu erfassen, einschließlich der Zeitstempel für das Einreihen, Entsperren, den ersten Start und das Beenden. (I163e9, b/479123623, b/507212482)
  • Experimentelle API zum Deaktivieren der opportunistischen In-Process-Planung hinzugefügt (I1062d, b/513299442)
  • Experimentelle API zum Abhören von WorkManager-Planungsereignissen hinzugefügt (I14487, b/448485695)
  • Arbeiterklassenname zu WorkInfo hinzufügen (I57da1, b/448485695)
  • Detailliertere Anmerkungen für die experimentelle Event-Listener-API hinzufügen (Icaa8e, b/448485695)
  • Eine neue API wurde hinzugefügt, mit der Nullable-String-Arrays aus Instanzen der Klasse Data abgerufen werden können (I78bc3, b/383071402).
  • work-analytics-Artefakt erstellen (Idc7c2, b/465357612)
  • Experimentelle API zum Festlegen eines Listeners für Worker-Ausführungsereignisse hinzugefügt (I06b38, b/448485695)

Fehlerkorrekturen

  • Dispatchers.Default anstelle des benutzerdefinierten Thread-Pools für die Standard-WM-Konfiguration verwenden (Ic2c42, b/506239869)
  • Tests zur Verwaltung von fehlerhaften Workern verbessern und hinzufügen (I500f3, b/506239869)
  • Ein ConcurrentModificationException-Fehler beim Dispatch des Ausführungs-Listeners von WorkManager's wurde behoben. (I4cc18, b/506239869)
  • Prozessabstürze in WorkManager beim Registrieren von Netzwerkbeschränkungs-Callbacks aufgrund fehlender ACCESS_NETWORK_STATE-Berechtigungen wurden behoben. (I7045a, b/446013734)
  • Verbesserung der Protokolldetails, wenn DEBUG-Protokolle aktiviert sind (Id9e5f, b/491209738)
  • Fehler behoben, durch den wiederholte Arbeitsvorgänge nicht im Betriebssystem geplant werden konnten (I452fc, b/504085166, b/517339607)
  • Der Link zum Configuration.Provider-Referenzdokument wurde korrigiert. (Ieedb7, b/340913210)
  • Event-Hooks blockieren keine Vorgänge mehr (I27cd8, b/448485695)
  • WorkManager versucht jetzt, die Initialisierung für generische SQLiteException noch einmal auszuführen. (I98436, b/485368721)
  • Ein Problem wurde behoben, bei dem Entwickler einen nicht vorhandenen Stoppgrundcode 0 erhalten konnten, indem sie ihn WorkInfo.STOP_REASON_UNKNOWN zuordneten. (I0b175, b/479314734)
  • Zusätzliche Probleme behoben, bei denen Netzwerkaufrufe im Hintergrund fehlschlugen, obwohl die Netzwerkbeschränkungen erfüllt waren (Ic7f73, b/445324855)
  • Sicherheitsausnahme in NetworkStateTracker behandeln. (I4b7ca, b/480123154)
  • Sorgen Sie dafür, dass Ausführungshooks einen genauen WorkInfo-Snapshot erhalten (I25ebb, b/448485695).
  • Ein Problem wurde behoben, bei dem Hintergrundnetzwerkanfragen unter Android 15 fehlschlagen konnten. (I60f24, I8a0a2, b/452081708) (I5abb7, b/465016918)
  • Ein Problem wurde behoben, bei dem periodische WorkRequest, die aufgrund einer nicht abgefangenen Ausnahme fehlschlagen, nicht neu geplant wurden. (Ia6b92, b/443879071)

Version 2.11

Version 2.11.2

25. März 2026

androidx.work:work-*:2.11.2 ist veröffentlicht. Version 2.11.2 enthält diese Commits.

Fehlerkorrekturen

  • Zusätzliche Probleme behoben, bei denen Netzwerkaufrufe im Hintergrund fehlschlugen, obwohl die Netzwerkbeschränkungen erfüllt waren (Ic7f73, b/445324855)
  • Sicherheitsausnahme in NetworkStateTracker behandeln. (I4b7ca, b/480123154)
  • Ein Problem wurde behoben, bei dem periodische WorkRequests, die aufgrund einer nicht abgefangenen Ausnahme fehlschlugen, nicht neu geplant wurden. (Ia6b92, b/443879071)

Version 2.11.1

28. Januar 2026

androidx.work:work-*:2.11.1 ist veröffentlicht. Version 2.11.1 enthält diese Commits.

Fehlerkorrekturen

  • Ein Problem wurde behoben, bei dem die Einschränkung für den Netzwerkstatus nicht bestanden wurde, obwohl die Verbindung unter Android 15 und höher blockiert war. (I5abb7, b/465016918)
  • Das Tracking von Einschränkungen für das Festnetz berücksichtigt den blockierten Status nicht für den Anfangswert. (I8a0a2, b/452081708)
  • Ein Problem mit der Übergabe von Einschränkungen für Netzwerkanfragen wurde behoben, wenn die Verbindung unter Android 15 und höher blockiert ist. (I60f24, b/452081708)

Version 2.11.0

22. Oktober 2025

androidx.work:work-*:2.11.0 ist veröffentlicht. Version 2.11.0 enthält diese Commits.

Wichtige Änderungen seit Version 2.10.0:

  • Die minSdk wurde von API 21 auf API 23 aktualisiert.
  • Die API setRemoteSessionTimeoutMillis im Konfigurationsgenerator von WorkManager wurde hinzugefügt, um die Konfiguration der Zeitspanne zu ermöglichen, in der eine RemoteWorkManager-Sitzung nach der letzten Verwendung aktiv bleibt.

Version 2.11.0-rc01

8. Oktober 2025

androidx.work:work-*:2.11.0-rc01 ist veröffentlicht. Version 2.11.0-rc01 enthält diese Commits.

Version 2.11.0-beta01

24. September 2025

androidx.work:work-*:2.11.0-beta01 ist veröffentlicht. Version 2.11.0-beta01 enthält diese Commits.

API-Änderungen

  • Füge stopRunningWorkWithReason zu WorkManager TestDriver hinzu. (Ie53b2, b/439955564)

Fehlerkorrekturen

  • Problem behoben, bei dem der Dienst im Vordergrund beendet wurde, wenn ausstehende Befehle vorhanden waren (Iae822, b/432069314)
  • Fehler behoben: Remote-Coroutine-Worker kann Remote-Dienst nicht entbinden (I842f2, b/247113322)

Version 2.11.0-alpha01

27. August 2025

androidx.work:work-*:2.11.0-alpha01 ist veröffentlicht. Version 2.11.0-alpha01 enthält diese Commits.

API-Änderungen

  • Das minSdk wurde von API 21 auf API 23 aktualisiert (Ibdfca, b/380448311, b/435705964, b/435705223).
  • Die API setRemoteSessionTimeoutMillis im Konfigurations-Builder von WorkManager wurde hinzugefügt, um die Konfiguration der Zeitspanne zu ermöglichen, in der eine RemoteWorkManager-Sitzung nach der letzten Verwendung aktiv ist. (Ib23c8)
  • Fügen Sie in WorkRequest.Builder eine experimentelle API hinzu, um Backoff anzuwenden, wenn die Arbeit vom System unterbrochen wird. (Ie2dc7, b/335513480)
  • Test-API hinzufügen, um eine andere Worker-Klasse an TestListenableWorkerBuilder zu übergeben als die, die zur Unterstützung benutzerdefinierter WorkerFactory-Implementierungen erstellt wird (If6bff, b/389154854)

Fehlerkorrekturen

  • Netzwerkfunktionen in SharedNetworkCallback zwischenspeichern, um unnötige IPCs zu vermeiden (Ie4027, b/427115602)
  • Problem mit der Auswertung von Netzwerkbeschränkungen behoben, bei dem Arbeitsvorgänge nach dem ersten nicht die aktuellen Netzwerkfunktionen erhielten, sondern nach einem Zeitlimit ConstraintsNotMet erreichten (Ib6a66, b/427115602)

Version 2.10

Version 2.10.5

24. September 2025

androidx.work:work-*:2.10.5 ist veröffentlicht. Version 2.10.5 enthält diese Commits.

Fehlerkorrekturen

  • Problem behoben, bei dem der Dienst im Vordergrund beendet wurde, wenn ausstehende Befehle vorhanden waren (Iae822, b/432069314)

Version 2.10.4

10. September 2025

androidx.work:work-*:2.10.4 ist veröffentlicht. Version 2.10.4 enthält diese Commits.

Fehlerkorrekturen

  • Problem behoben, bei dem RemoteCoroutineWorker den Remote-Dienst nicht entbinden konnte (I842f2, b/247113322)

Version 2.10.3

30. Juli 2025

androidx.work:work-*:2.10.3 ist veröffentlicht. Version 2.10.3 enthält diese Commits.

Fehlerkorrekturen

  • Ein Problem wurde behoben, bei dem Worker mit identischen Netzwerkbeschränkungen wie ein vorheriger Worker gemeldet haben, dass ihre Beschränkungen nicht erfüllt werden. (b/427115602)

Version 2.10.2

18. Juni 2025

androidx.work:work-*:2.10.2 ist veröffentlicht. Version 2.10.2 enthält diese Commits.

Fehlerkorrekturen

  • Ein Problem wurde behoben, bei dem Mitarbeiter mit Netzwerkanfragen und Standardfunktionen beibehalten wurden. Dies führte dazu, dass entfernte Funktionen wieder hinzugefügt wurden und Mitarbeiter mit Netzwerkbeschränkungen sich nicht richtig verhielten. (b/409716532)
  • Ein Fehler wurde behoben, der dazu führte, dass Worker mit Netzwerkeinschränkungen nicht sofort ausgeführt wurden, weil die Einschränkungen nicht erfüllt waren, obwohl das Netzwerk und die Funktionen verfügbar waren. (b/423403088)

Version 2.10.1

23. April 2025

androidx.work:work-*:2.10.1 ist veröffentlicht. Version 2.10.1 enthält diese Commits.

Fehlerkorrekturen

  • Die Wahrscheinlichkeit, dass TooManyRequestsException durch die Registrierung von WorkManager eines NetworkCallback für die Einschränkungsverfolgung ausgelöst wird, wird verringert. (b/231499040, b309d5).

Version 2.10.0

30. Oktober 2024

androidx.work:work-*:2.10.0 ist veröffentlicht. Version 2.10.0 enthält diese Commits.

Wichtige Änderungen seit Version 2.9.1

  • Jobs aus WorkManager wurden Trace-Tags hinzugefügt. Dadurch ist „adb shell dumpsys jobscheduler“ viel einfacher zu verstehen, da der Name des ausgeführten Worker enthalten ist. Außerdem werden Trace-Abschnitte um wichtige Bereiche von WorkManager herum hinzugefügt.
  • Configuration.workerCoroutineContext wurde hinzugefügt, um den Dispatcher zu steuern, in dem CoroutineWorker ausgeführt wird.
  • Entwickler können NetworkRequest als Einschränkung für einen Worker über die Methode Constraints.setRequiredNetworkRequest angeben. So können Sie genauer festlegen, in welchem Netzwerk dieser Worker ausgeführt werden soll.
  • WorkManager 2.10.0 wird jetzt mit SDK 35 kompiliert und enthält verschiedene Änderungen zur Kompatibilität mit SDK 35.

Version 2.10.0-rc01

24. Oktober 2024

androidx.work:work-*:2.10.0-rc01 ist veröffentlicht. Version 2.10.0-rc01 enthält diese Commits.

Version 2.10.0-beta01

2. Oktober 2024

androidx.work:work-*:2.10.0-beta01 ist veröffentlicht. Version 2.10.0-beta01 enthält diese Commits.

Version 2.10.0-alpha04

18. September 2024

androidx.work:work-*:2.10.0-alpha04 ist veröffentlicht. Version 2.10.0-alpha04 enthält diese Commits.

API-Änderungen

  • Fügen Sie den Stoppgrund STOP_REASON_FOREGROUND_SERVICE_TIMEOUT hinzu, wenn ein Worker im Vordergrund aufgrund eines Ausführungstimeouts basierend auf dem Typ des Dienstes im Vordergrund beendet wird. (Ibd0af)

Version 2.10.0-alpha03

4. September 2024

androidx.work:work-*:2.10.0-alpha03 ist veröffentlicht. Version 2.10.0-alpha03 enthält diese Commits.

Neue Funktionen

  • Jobs aus WorkManager wurden Trace-Tags hinzugefügt. Dadurch ist „adb shell dumpsys jobscheduler“ viel einfacher zu verstehen, da der Name des ausgeführten Worker enthalten ist. Außerdem werden Trace-Abschnitte um wichtige Bereiche von WorkManager herum hinzugefügt.

API-Änderungen

  • WorkManager 2.10.0 wird jetzt mit SDK 35 kompiliert.
  • Wir haben das Problem behoben, dass Vordergrund-Worker vom Typ „short service“ und „data sync“ ein Zeitlimit überschritten und einen ANR-Fehler verursacht haben, wenn WorkManager nicht stopSelf() aufgerufen hat. Diese Korrektur gilt nur für Geräte mit API 34 und 35, auf denen Typen von Diensten im Vordergrund eingeführt wurden. (ca06b2, b/364508145)
  • Neue WorkerParameters-APIs, mit denen der Remote-Prozess gewechselt werden kann, an den die Worker gebunden wird, wenn eine WorkerFactory verwendet wird. (Ibdc8a, Ie8a90, I7373f)

Fehlerkorrekturen

  • Ein Absturz wurde behoben, der dadurch verursacht wurde, dass WorkManager versucht hat, einen Worker mit langer Laufzeit (d.h. einen Worker im Vordergrund) neu zu starten, wenn für den Vordergrundtyp des Workflows erforderliche Berechtigungen für Android 14 widerrufen wurden. (b/333957914)
  • Die manuelle Beschreibung des Zugriffs auf neue Plattform-APIs wurde entfernt, da dies automatisch über die API-Modellierung erfolgt, wenn R8 mit AGP 7.3 oder höher verwendet wird (z. B. R8-Version 3.3), und für alle Builds, wenn AGP 8.1 oder höher verwendet wird (z. B. D8-Version 8.1). Clients, die AGP nicht verwenden, wird empfohlen, auf D8-Version 8.1 oder höher zu aktualisieren. Weitere Details findest du in diesem Artikel. (Ia60e0, b/345472586)

Version 2.10.0-alpha02

17. April 2024

androidx.work:work-*:2.10.0-alpha02 ist veröffentlicht. Version 2.10.0-alpha02 enthält diese Commits.

API-Änderungen

  • Es wurde die Möglichkeit hinzugefügt, Trace-Spans über eine konfigurierbare @RestrictTo Tracer in WorkManager auszugeben. (I17d7f, b/260214125)
  • Configuration.workerCoroutineContext wurde hinzugefügt, um den Dispatcher zu steuern, in dem CoroutineWorker ausgeführt wird. So lässt sich die Verwendung von Dispatchers.Default in WorkManager vollständig vermeiden. (Icd1b7)
  • Benutzerdefinierte Ausnahme-Handler für Workers hinzufügen (Ib1b74, b/261190695)
  • OneTimeWorkRequest.Builder und PeriodicWorkRequest.Builder können jetzt mit KClass anstelle von Class erstellt werden: val request = OneTimeWorkRequest.Builder(Worker::class).setConstraints(...).build() (Ib55f6)
  • Die Klasse WorkManager wurde zu Kotlin migriert. Methoden, die LiveData, ListenableFuture oder Flow zurückgeben, liefern jetzt korrekte Informationen zur Null-Zulässigkeit. Dazu sind möglicherweise Änderungen am Quellcode der Clients erforderlich, wenn die Annahmen zur Nullable-Eigenschaft in diesem Code falsch waren. (If6757)

Version 2.10.0-alpha01

24. Januar 2024

androidx.work:work-*:2.10.0-alpha01 ist veröffentlicht. Version 2.10.0-alpha01 enthält diese Commits.

Neue Funktionen

  • Entwickler können NetworkRequest als Einschränkung für einen Worker über die Methode Constraints.setRequiredNetworkRequest angeben. So können Sie genauer festlegen, in welchem Netzwerk dieser Worker ausgeführt werden soll.

API-Änderungen

  • Es wurde die Möglichkeit hinzugefügt, NetworkRequest als Einschränkung anzugeben. (Id98a1, b/280634452)

Version 2.9

Version 2.9.1

7. August 2024

androidx.work:work-*:2.9.1 ist veröffentlicht. Version 2.9.1 enthält diese Commits.

Fehlerkorrekturen

  • Ein Absturz wurde behoben, der dadurch verursacht wurde, dass WorkManager versucht hat, einen lang andauernden Worker (d.h. einen Worker im Vordergrund) neu zu starten, wenn der Typ des Vorgangs im Vordergrund Berechtigungen für Android 14 hatte, die widerrufen wurden. (b/333957914)

Version 2.9.0

29. November 2023

androidx.work:work-*:2.9.0 ist veröffentlicht. Version 2.9.0 enthält diese Commits.

Wichtige Änderungen seit Version 2.8.0

  • Beobachtbarkeit über Flow. Anstelle von LiveData kann der Fortschritt des Workers jetzt über den Flow über WorkManager.getWorkInfosFlow und ähnliche Methoden beobachtet werden.
  • WorkManager enthält jetzt einen Hinweis darauf, warum ein Worker zuvor beendet wurde. Sie kann über die Methode getStopReason() von einem Worker selbst oder über getStopReason() von WorkInfo abgefragt werden.
  • Genaue Planung von periodischen Workern über setNextScheduleTimeOverride. So kann der nächste periodische Arbeitsplan dynamisch berechnet werden. Das ermöglicht die Implementierung erweiterter Funktionen wie adaptive Aktualisierungszeiten, benutzerdefiniertes Wiederholungsverhalten oder das Ausführen eines Newsfeed-Workers jeden Morgen vor dem Aufwachen des Nutzers ohne Drift. ExistingPeriodicWorkPolicy.UPDATE sollte mit diesen Techniken verwendet werden, um zu vermeiden, dass ein aktuell ausgeführter Worker abgebrochen wird, während der nächste geplant wird.
  • WorkManager-Tests mit Threads, die der Produktion entsprechen. ExecutorsMode.PRESERVE_EXECUTORS kann in initializeTestWorkManager verwendet werden, um in Configuration festgelegte Executors beizubehalten und den echten Hauptthread zu verwenden.
  • Coroutinen-APIs wie CoroutineWorker wurden vom zusätzlichen Artefakt „work-runtime-ktx“ zum Hauptartefakt „work-runtime“ verschoben. „work-runtime-ktx“ ist jetzt leer.

API-Änderungen

  • stopReason wurde „WorkInfo“ hinzugefügt. Dadurch ist stopReason nach der Ausführung des Workers verfügbar. Das kann bei der Berichterstellung stopReason hilfreich sein, da eine App nach dem Beenden eines Workers sehr schnell beendet werden kann. (I21386)
  • Clock kann über die Konfiguration festgelegt und zur Steuerung der Ausführungsreihenfolge von Worker-Tests verwendet werden. (Ic586e)
  • Der getStopReason()-Methode wurde ListenableWorker hinzugefügt, um einen Hinweis darauf zu geben, warum der Worker angehalten wurde. (I07060)
  • WorkManagerTestInitHelper#closeWorkDatabase() wurde hinzugefügt, um die Closeguard-Warnung zu geleakten Ressourcen zu vermeiden. (Ia8d49)
  • Der Konstruktor von WorkInfo ist jetzt öffentlich, was beim Testen nützlich sein kann. (Ia00b6, b/209145335)
  • work-runtime-ktx ist jetzt leer. CoroutineWorker und andere Kotlin-spezifische Dienstprogramme sind jetzt im Hauptartefakt für die Arbeitslaufzeit verfügbar. (I71a9a)
  • Die Methode setNextScheduleTimeOverride wurde hinzugefügt, mit der sich periodische Arbeitszeitpläne genau festlegen lassen (I3b4da).
  • getNextScheduleTimeMillis wurde hinzugefügt, um Informationen zur geplanten Laufzeit zu erhalten. WorkInfo wurde hinzugefügt. (I797e4)
  • WorkInfo werden Informationen zur anfänglichen Verzögerung und Periodizität hinzugefügt. (I52f2f)
  • Die Methoden getWorkInfosByTagFlow, getWorkInfoByIdFlow, getWorkInfosForUniqueWorkFlow, getWorkInfosFlow (If122a) wurden hinzugefügt, um Worker über Flows zu beobachten.
  • Fehlende @RequiresApi(...)-Anmerkungen zu Konstruktoren und Properties von Constraints hinzugefügt. Sie sind jetzt an entsprechende Anmerkungen für Setter in Constraints.Builder angeglichen, die seit frühen Versionen von WorkManager vorhanden waren. (I6d7d2)
  • WorkManager hat jetzt ein separates Limit für Content-URI-Worker, um ihnen garantierte Slots in JobScheduler zu geben und so zu verhindern, dass bei hoher Last Content-Updates fehlen. Das Limit kann über Configuration.Builder.setContentUriTriggerWorkersLimit konfiguriert werden. (Ic128f)
  • WorkInfo werden Einschränkungen hinzugefügt. (I162c0)

Version 2.9.0-rc01

18. Oktober 2023

androidx.work:work-*:2.9.0-rc01 ist veröffentlicht. Version 2.9.0-rc01 enthält diese Commits.

  • Keine Änderungen seit der letzten Betaversion

Version 2.9.0-beta01

6. September 2023

androidx.work:work-*:2.9.0-beta01 ist veröffentlicht. Version 2.9.0-beta01 enthält diese Commits.

API-Änderungen

Version 2.9.0-alpha02

26. Juli 2023

androidx.work:work-*:2.9.0-alpha02 ist veröffentlicht. Version 2.9.0-alpha02 enthält diese Commits.

Neue Funktionen

  • WorkManager enthält jetzt einen Hinweis darauf, warum ein Worker zuvor beendet wurde. Sie kann über die Methode getStopReason() von einem Worker selbst oder über getStopReason() von WorkInfo abgefragt werden.

API-Änderungen

  • stopReason wurde „WorkInfo“ hinzugefügt. stopReason ist verfügbar, nachdem der Worker ausgeführt wurde. Das kann bei der Berichterstellung stopReason hilfreich sein, da eine App sehr schnell beendet werden kann, sobald ein Worker beendet wurde. (I21386)
  • Die Uhr kann über die Konfiguration eingestellt und zur Steuerung der Ausführungsreihenfolge von Worker-Tests verwendet werden. (Ic586e)
  • Der Klasse ListenableWorker wurde die Methode getStopReason() hinzugefügt, die einen Hinweis darauf gibt, warum der Worker beendet wurde. (I07060)
  • WorkManagerTestInitHelper#closeWorkDatabase() wurde hinzugefügt, um die Warnung von Closeguard zu umgehen, dass Ressourcen offengelegt wurden. (Ia8d49)

Fehlerkorrekturen

  • Es wurde die Möglichkeit hinzugefügt, overrideNextScheduleTime mit TestDriver zu umgehen. Außerdem wurden Probleme mit der Testbarkeit behoben. (Ic2905)

Version 2.9.0-alpha01

7. Juni 2023

androidx.work:work-*:2.9.0-alpha01 ist veröffentlicht. Version 2.9.0-alpha01 enthält diese Commits.

Neue Funktionen

  • Beobachtbarkeit über Flow. Anstelle von LiveData kann der Fortschritt des Workers jetzt über den Flow mit WorkManager.getWorkInfosFlow und ähnlichen Methoden beobachtet werden.
  • Genaue Planung von periodischen Workern über setNextScheduleTimeOverride. So kann der nächste periodische Arbeitsplan dynamisch berechnet werden. Das ermöglicht die Implementierung erweiterter Funktionen wie adaptive Aktualisierungszeiten, benutzerdefiniertes Wiederholungsverhalten oder das Ausführen eines Newsfeed-Workers jeden Morgen vor dem Aufwachen des Nutzers ohne Drift. ExistingPeriodicWorkPolicy.UPDATE sollte in Kombination mit diesen Techniken verwendet werden, um zu vermeiden, dass ein aktuell ausgeführter Worker abgebrochen wird, während der nächste geplant wird.
  • Die Tests von WorkManager entsprechen der Produktion. Mit ExecutorsMode.PRESERVE_EXECUTORS können in Configuration festgelegte Executors beibehalten und der tatsächliche Hauptthread verwendet werden.
  • Coroutinen-APIs wie CoroutineWorker wurden vom zusätzlichen Artefakt work-runtime-ktx in das Hauptartefakt work-runtime verschoben. work-runtime-ktx ist jetzt leer.

API-Änderungen

  • Der Konstruktor von WorkInfo ist jetzt öffentlich. Das kann beim Testen nützlich sein. (Ia00b6, b/209145335)
  • work-runtime-ktx ist jetzt leer. CoroutineWorker und andere Kotlin-spezifische Dienstprogramme sind jetzt im Hauptartefakt work-runtime verfügbar. (I71a9a)
  • Die Methode setNextScheduleTimeOverride wurde hinzugefügt, mit der sich periodische Arbeitszeitpläne genau festlegen lassen (I3b4da).
  • getEarliestRunTimeMillis wurde in getNextScheduleTimeMillis umbenannt. (I2bd7a)
  • Informationen zur nächsten geplanten Ausführung werden WorkInfo hinzugefügt. (I797e4)
  • WorkInfo werden Informationen zur anfänglichen Verzögerung und Periodizität hinzugefügt. (I52f2f)
  • Die Methoden getWorkInfosByTagFlow, getWorkInfoByIdFlow, getWorkInfosForUniqueWorkFlow, getWorkInfosFlow (If122a) wurden hinzugefügt, um Worker über Flows zu beobachten.
  • Fehlende @RequiresApi(...)-Anmerkungen zu Konstruktoren und Eigenschaften von Constraints hinzugefügt. Sie sind jetzt an entsprechende Anmerkungen für Setter in Constraints.Builder angeglichen, die seit frühen Versionen von WorkManager vorhanden waren. (I6d7d2)
  • WorkManager hat jetzt ein separates Limit für Content-URI-Worker, um ihnen garantierte Slots in JobScheduler zu geben und zu verhindern, dass bei hoher Last Content-Updates fehlen. Das Limit kann über Configuration.Builder.setContentUriTriggerWorkersLimit konfiguriert werden. (Ic128f)
  • WorkInfo werden Einschränkungen hinzugefügt. (I162c0)

Version 2.8

Version 2.8.1

22. März 2023

androidx.work:work-*:2.8.1 ist veröffentlicht. Version 2.8.1 enthält diese Commits.

Fehlerkorrekturen

  • ANR in RescheduleReceiver behoben, bei dem zwei gleichzeitige Übertragungen zuvor nicht richtig verarbeitet wurden. (b/236906724)

Version 2.8.0

8. Februar 2023

androidx.work:work-*:2.8.0 ist veröffentlicht. Version 2.8.0 enthält diese Commits.

Wichtige Änderungen seit Version 2.7.0

Neue Funktionen

API-Änderungen

  • WorkManager.updateWork wurde hinzugefügt, um die Arbeit zu aktualisieren und dabei die ursprüngliche Enqueue-Zeit und Verkettung beizubehalten.(I9a248, b/219446409)
  • ExistingPeriodicWorkPolicy.UPDATE wurde hinzugefügt. Diese Richtlinie ermöglicht die Aktualisierung eines periodischen Werks anhand des Namens. Sie ähnelt der vorhandenen REPLACE, ist aber weniger aufdringlich: Sie bricht einen Worker nicht ab, wenn er gerade ausgeführt wird, und die Enqueue-Zeit bleibt erhalten. Die anfängliche Verzögerung und der Zeitraum werden anhand der ursprünglichen Enqueue-Zeit und nicht anhand der Update-Zeit berechnet. REPLACE wurde eingestellt, um Verwechslungen mit der sehr ähnlich benannten Funktion REPLACE und UPDATE zu vermeiden. Wenn Sie die bisherige Semantik von REPLACE beibehalten möchten, können Sie die neu hinzugefügte Funktion CANCEL_AND_REENQUEUE verwenden, die mit REPLACE identisch ist. (I985ed, b/219446409)
  • Es wurde die Möglichkeit hinzugefügt, Planungsfehler abzufangen, indem Consumer<Throwable> über setSchedulingExceptionHandler bereitgestellt wird.
  • Es wurde die Möglichkeit hinzugefügt, Consumer<Throwable> über setInitializationExceptionHandler bereitzustellen, um festzustellen, ob beim Initialisieren von WorkManager Probleme aufgetreten sind.
  • Inline-Hilfen für OneTimeWorkRequest und PeriodicWorkRequest wurden von androidx.work:work-runtime-ktx nach androidx.work:work-runtime verschoben (I0010f, b/209145335)
  • Die Hilfsmethoden WorkQuery.fromIds, WorkQuery.fromStates, WorkQuery.fromUniqueWorkNames und WorkQuery.fromTags wurden hinzugefügt, um WorkQuery direkt zu erstellen. (b/199919736) (If48f2, b/199919736)
  • getForegroundInfo wurde zu Worker hinzugefügt. (Ic1ead)
  • RxWorker sowohl für RxJava 2 als auch für RxJava 3 hat jetzt setForeground, das Completable zurückgibt und anstelle von setForegroundInfoAsync verwendet werden kann, das ListenableFuture zurückgibt.
  • RxWorker sowohl für RxJava 2 als auch für RxJava 3 gibt getForegroundInfo Single zurück, das anstelle von getForegroundInfoAsync verwendet werden kann, das ListenableFuture zurückgibt. (b/203851459)
  • Einschränkungen können jetzt direkt erstellt werden, anstatt Constraints.Builder zu verwenden. Das ist für Kotlin-Nutzer praktisch. (Idc390, b/137568653)
  • Es wurde die Möglichkeit hinzugefügt, zu prüfen, ob WorkManager initialisiert wurde. Außerdem wurde eine neue getConfiguration() API für Bibliotheksentwickler hinzugefügt, mit der die Konfiguration abgerufen werden kann, mit der WorkManager initialisiert wurde. (I6eff3, b/212300336)

Fehlerkorrekturen

  • Ein Problem mit dem Greedy-Scheduler wurde behoben, das verhinderte, dass Worker bei hoher Last sofort ausgeführt wurden. (I9686b, b/248111307)
  • Das Symbol @RequiresPermission wurde APIs hinzugefügt, für die die Berechtigung POST_NOTIFICATIONS für SDK 33 und höher erteilt werden muss. (Ie542e, b/238790278)
  • Stornierungen in CoroutineScope an ListenableFuture weitergeben, wenn suspendCancellableCoroutine verwendet wird

Version 2.8.0-rc01

7. Dezember 2022

androidx.work:work-*:2.8.0-rc01 ist veröffentlicht. Version 2.8.0-rc01 enthält diese Commits.

Neue Funktionen

  • Diese Version enthält keine neuen Funktionen. Es handelt sich hauptsächlich um eine Versionsaktualisierung.

Version 2.8.0-beta02

9. November 2022

androidx.work:work-*:2.8.0-beta02 ist veröffentlicht. Version 2.8.0-beta02 enthält diese Commits.

Fehlerkorrekturen

  • Die Methode equals in WorkInfo wurde korrigiert. Bisher wurden Informationen zur neuen Generation nicht berücksichtigt. (4977cc)

Version 2.8.0-beta01

5. Oktober 2022

androidx.work:work-*:2.8.0-beta01 ist veröffentlicht. Version 2.8.0-beta01 enthält diese Commits.

Fehlerkorrekturen

  • Ein Problem mit dem Greedy-Scheduler wurde behoben, das verhinderte, dass Worker bei hoher Last sofort ausgeführt wurden. (I9686b, b/248111307)

Version 2.8.0-alpha04

7. September 2022

androidx.work:work-*:2.8.0-alpha04 ist veröffentlicht. Version 2.8.0-alpha04 enthält diese Commits.

API-Änderungen

  • WorkerInfo.getGeneration() und WorkerParameters.getGeneration() wurden hinzugefügt, um die Generation eines Workers zurückzugeben. Ein Worker hat mehrere Generationen, wenn er über WorkManager.updateWork oder WorkManager.enqueueUniquePeriodicWork mit ExistingPeriodicWorkPolicy.UPDATE aktualisiert wurde. Wenn der Worker gerade ausgeführt wird, kann diese Methode eine neuere Generation als die des aktuell ausgeführten Workers zurückgeben, wenn während der Ausführung des Workers ein Update erfolgt ist. (I665c5, b/219446409) (I128a9, b/219446409)
  • InitializationExceptionHandler wurde hinzugefügt, ein Exception Handler, mit dem sich feststellen lässt, ob beim Initialisieren von WorkManager Probleme aufgetreten sind. (I061de)

Version 2.8.0-alpha03

10. August 2022

androidx.work:work-*:2.8.0-alpha03 ist veröffentlicht. Version 2.8.0-alpha03 enthält diese Commits.

Neue Funktionen

  • Es wurde die Möglichkeit hinzugefügt, WorkRequests auf nicht aufdringliche Weise zu aktualisieren, wobei die ursprüngliche Enqueue-Zeit, Verkettung usw. beibehalten werden. Weitere Informationen finden Sie unter WorkManager.updateWork und ExistingPeriodicWorkPolicy.UPDATE.

API-Änderungen

  • WorkManager.updateWork wurde hinzugefügt, um die Arbeit zu aktualisieren und dabei die ursprüngliche Enqueue-Zeit und Verkettung beizubehalten.(I9a248, b/219446409)
  • ExistingPeriodicWorkPolicy.UPDATE wurde hinzugefügt. Mit dieser Richtlinie kann ein wiederkehrendes Werk anhand des Namens aktualisiert werden. Sie ähnelt der vorhandenen REPLACE, ist aber weniger aufdringlich: Ein Worker wird nicht abgebrochen, wenn er gerade ausgeführt wird, und die Enqueue-Zeit bleibt erhalten. Die anfängliche Verzögerung und der Zeitraum werden anhand der ursprünglichen Enqueue-Zeit und nicht anhand der Aktualisierungszeit berechnet. REPLACE wurde eingestellt, um Verwechslungen zwischen den sehr ähnlich benannten REPLACE und UPDATE zu vermeiden. Wenn Sie die bisherige Semantik von REPLACE beibehalten möchten, können Sie die neu hinzugefügte CANCEL_AND_REENQUEUE verwenden, die mit REPLACE identisch ist. (I985ed, b/219446409)
  • Es wurde die Möglichkeit hinzugefügt, Terminplanungs-Ausnahmen abzufangen, indem ein SchedulingExceptionHandler definiert wird. (I033eb)
  • Inline-Helfer für OneTimeWorkRequest und PeriodicWorkRequest wurden von androidx.work:work-runtime-ktx nach androidx.work:work-runtime verschoben (I0010f, b/209145335)

Fehlerkorrekturen

  • @RequiresPermission wurde APIs hinzugefügt, für die die Berechtigung POST_NOTIFICATIONS für SDK 33 und höher erteilt werden muss. (Ie542e, b/238790278)

Version 2.8.0-alpha02

6. April 2022

androidx.work:work-*:2.8.0-alpha02 ist veröffentlicht. Version 2.8.0-alpha02 enthält diese Commits.

API-Änderungen

  • Einschränkungen können jetzt direkt erstellt werden, anstatt den Builder zu verwenden. Das ist für Kotlin-Nutzer praktisch. (Idc390, b/137568653)
  • Es wurde die Möglichkeit hinzugefügt, zu prüfen, ob WorkManager initialisiert wurde. Außerdem wurde eine neue getConfiguration() API für Bibliotheksentwickler hinzugefügt, mit der die Konfiguration abgerufen werden kann, mit der WorkManager initialisiert wurde. (I6eff3, b/212300336)

Version 2.8.0-alpha01

12. Januar 2022

androidx.work:work-*:2.8.0-alpha01 ist veröffentlicht. Version 2.8.0-alpha01 enthält diese Commits.

API-Änderungen

  • Die Hilfsmethoden WorkQuery.fromStates, WorkQuery.fromUniqueWorkNames und WorkQuery.fromTags wurden hinzugefügt, um WorkQuery direkt zu erstellen. (If48f2, b/199919736)
  • Es wurden experimentelle BuildCompat-Methoden für zukünftige SDKs hinzugefügt (Iafd82, b/207528937).
  • Fügen Sie getForegroundInfo zu Worker hinzu. (Ic1ead)
  • Es wurden Hilfsmethoden WorkQuery.fromIds zum direkten Erstellen von WorkQuery aus IDs hinzugefügt. (Ie5bdf, b/199919736)
  • RxWorker hat jetzt setForeground, das Completable zurückgibt und anstelle von setForegroundInfoAsync verwendet werden kann, das ListenableFuture zurückgibt. (I85156)
  • RxWorker für RxJava 2 hat jetzt getForegroundInfo, das Single zurückgibt und anstelle von getForegroundInfoAsync verwendet werden kann, das ListenableFuture zurückgibt. (I21c91, b/203851459)
  • RxWorker für RxJava 3 hat jetzt getForegroundInfo, das Single zurückgibt und anstelle von getForegroundInfoAsync verwendet werden kann, das ListenableFuture zurückgibt. (I1ca8a)
  • RxWorker hat jetzt setForeground, das Completable zurückgibt und anstelle von setForegroundInfoAsync verwendet werden kann, das ListenableFuture zurückgibt. (I992a3, b/203851459)

Fehlerkorrekturen

  • Stornierungen in CoroutineScope an ListenableFuture weitergeben, wenn suspendCancellableCoroutine verwendet wird (I77e63)

Version 2.7

Version 2.7.1

17. November 2021

androidx.work:work-*:2.7.1 ist veröffentlicht. Version 2.7.1 enthält diese Commits.

Fehlerkorrekturen

  • Kündigungen in der CoroutineScope werden bei Verwendung von suspendCancellableCoroutine an die ListenableFuture weitergegeben. (I77e63)
  • Eine Ausnahme wird sofort ausgelöst, wenn verzögerte Arbeitsanfragen als beschleunigt markiert werden. bef1762

Version 2.7.0

13. Oktober 2021

androidx.work:work-*:2.7.0 ist veröffentlicht. Version 2.7.0 enthält diese Commits.

Wichtige Änderungen seit Version 2.6.0

  • WorkManager führt eine neue WorkRequest.Builder.setExpedited(...) API ein, um Einschränkungen bei Diensten im Vordergrund unter Android 12 zu umgehen.

  • Wenn Sie setExpedited(...) verwenden, delegiert WorkManager ab Android 12 an beschleunigte Jobs in JobScheduler. Auf früheren Android-Versionen wird durch Delegieren an einen Dienst im Vordergrund für Abwärtskompatibilität gesorgt.

Version 2.7.0-rc01

29. September 2021

androidx.work:work-*:2.7.0-rc01 ist veröffentlicht. Version 2.7.0-rc01 enthält diese Commits.

Diese Version ist identisch mit androidx.work:work-*:2.7.0-beta01.

Version 2.7.0-beta01

1. September 2021

androidx.work:work-*:2.7.0-beta01 ist veröffentlicht. Version 2.7.0-beta01 enthält diese Commits.

Neue Funktionen

  • Reduzieren Sie Konflikte bei SQLite mit mehreren Prozessen bei der Initialisierung von WorkManager.

API-Änderungen

  • @ExperimentalExpeditedWork-APIs entfernen, da die zugrunde liegenden Plattform-APIs für Android 12 (S) stabil sind. (aosp/1792806)

Fehlerkorrekturen

  • Eine bessere Fehlermeldung für beschleunigte Worker, die getForegroundInfoAsync() nicht implementieren. (aosp/1809376)

Version 2.7.0-alpha05

21. Juli 2021

androidx.work:work-*:2.7.0-alpha05 ist veröffentlicht. Version 2.7.0-alpha05 enthält diese Commits.

Diese Version enthält auch Fehlerkorrekturen aus der WorkManager2.6.0-beta02-Version.

Version 2.7.0-alpha04

2. Juni 2021

androidx.work:work-*:2.7.0-alpha04 ist veröffentlicht.

Diese Version enthält auch die Änderungen aus der Version 2.6.0-beta01.

API-Änderungen

Fehlerkorrekturen

  • Wenn beschleunigte Jobs neu geplant werden, sind sie nicht mehr beschleunigt. Sie werden zu regulären Jobs.

Version 2.7.0-alpha03

21. April 2021

androidx.work:work-*:2.7.0-alpha03 ist veröffentlicht. Version 2.7.0-alpha03 enthält diese Commits.

Neue Funktionen

API-Änderungen

Version 2.7.0-alpha02

10. März 2021

androidx.work:work-*:2.7.0-alpha02 ist veröffentlicht. Version 2.7.0-alpha02 enthält diese Commits.

Fehlerkorrekturen

  • Die Unveränderlichkeit von PendingIntent wird explizit gemacht, um einen Absturz bei der Ausrichtung auf Android 12 zu beheben. (b/180884673)

Version 2.7.0-alpha01

18. Februar 2021

androidx.work:work-*:2.7.0-alpha01 ist veröffentlicht. Version 2.7.0-alpha01 enthält diese Commits.

Neue Funktionen

  • WorkManager führt eine neueWorkRequest.Builder.setExpedited(...) API ein, um die Einschränkungen für Dienste im Vordergrund in Android 12 zu berücksichtigen.

    Apps können keinen Dienst im Vordergrund mehr starten, wenn sie im Hintergrund ausgeführt werden. Um lange laufende Aufgaben, die zuvor an den Lebenszyklus eines Dienstes im Vordergrund gebunden waren, besser zu unterstützen, können Anwendungen WorkRequest als expedited markieren.

    Diese API ersetzt die APIs setForegroundAsync(...) / setForeground(...), die jetzt eingestellt wurden.

    Wenn Sie setExpedited(...) verwenden, werden ab Android 12 in WorkManager beschleunigte Jobs an JobScheduler delegiert. Für frühere Android-Versionen wird durch die Delegierung an Dienste im Vordergrund Abwärtskompatibilität bereitgestellt.

API-Änderungen

  • Unterstützung für beschleunigte WorkRequests hinzugefügt.

Version 2.6.0

Version 2.6.0

1. September 2021

androidx.work:work-*:2.6.0 ist veröffentlicht. Version 2.6.0 enthält diese Commits.

Wichtige Änderungen seit Version 2.5.0

  • WorkManager verwendet jetzt androidx.startup, um WorkManager zu initialisieren. Wenn Sie tools:node="remove" verwendet haben, um ContentProvider zu initialisieren, müssen Sie stattdessen Folgendes tun.

    <provider
        android:name="androidx.startup.InitializationProvider"
        android:authorities=\"${applicationId}.androidx-startup"
        android:exported="false"
        tools:node=\"merge">
        <!-- If you are using androidx.startup to initialize other components -->
        <meta-data
            android:name="androidx.work.WorkManagerInitializer"
            android:value="androidx.startup"
            tools:node="remove" />
     </provider>
    
    <!-- If you want to disable android.startup completely. -->
     <provider
                android:name="androidx.startup.InitializationProvider"
                android:authorities="${applicationId}.androidx-startup"
                tools:node="remove" />
    
  • Unterstützung für Worker hinzugefügt, die in jedem Prozess ausgeführt werden können. (Iaf200)

  • Es wurde ein RemoteCoroutineWorker hinzugefügt, eine Implementierung von RemoteListenableWorker, die an einen Remote-Prozess gebunden werden kann. (I30578)

Version 2.6.0-rc01

4. August 2021

androidx.work:work-*:2.6.0-rc01 ist veröffentlicht. Version 2.6.0-rc01 enthält diese Commits.

Diese Version ist identisch mit androidx.work:work-*:2.6.0-beta02.

Version 2.6.0-beta02

21. Juli 2021

androidx.work:work-*:2.6.0-beta02 ist veröffentlicht. Version 2.6.0-beta02 enthält diese Commits.

Fehlerkorrekturen

  • RemoteWorkManager wird jetzt korrekt von RemoteWorkManagerService getrennt, sodass RemoteWorkManagerService korrekt bereinigt werden kann. aosp/1730694
  • RemoteListenableWorker wird jetzt korrekt von RemoteWorkerService getrennt, sodass RemoteWorkerService korrekt bereinigt werden kann. aosp/1743817
  • ForceStopRunnable wird jetzt nur noch im primären App-Prozess ausgeführt. Dies ist eine Optimierung, die Ressourcenkonflikte für Apps mit mehreren Prozessen vermeidet. aosp/1749180, aosp/1761729

Version 2.6.0-beta01

2. Juni 2021

androidx.work:work-*:2.6.0-beta01 ist veröffentlicht. Version 2.6.0-beta01 enthält diese Commits.

Diese Version enthält einige kleinere Verbesserungen der Dokumentation. Die Version ist weitgehend identisch mit 2.6.0-alpha02.

Version 2.6.0-alpha02

21. April 2021

androidx.work:work-*:2.6.0-alpha02 ist veröffentlicht. Version 2.6.0-alpha02 enthält diese Commits.

Neue Funktionen

  • Unterstützung für Worker, die in jedem Prozess ausgeführt werden können. (Iaf200)

  • Wir haben RemoteCoroutineWorker hinzugefügt, eine Implementierung von RemoteListenableWorker, die an einen Remote-Prozess gebunden werden kann. (I30578)

API-Änderungen

  • Unterstützung für die Netzwerkbeschränkung TEMPORARILY_UNMETERED hinzugefügt. (I08d5e)
  • Unterstützung von Worker-Prozessen für setProgressAsync(). (Ib6d08)
  • Machen Sie WorkManagerInitializer öffentlich, damit andere androidx.startup.Initializers sie als Abhängigkeiten verwenden können. (I5ab11)

Version 2.6.0-alpha01

24. März 2021

androidx.work:work-*:2.6.0-alpha01 ist veröffentlicht. Version 2.6.0-alpha01 enthält diese Commits.

Neue Funktionen

  • WorkManager verwendet jetzt androidx.startup, um WorkManager zu initialisieren. Bisher wurde dies von androidx.work.impl.WorkManagerInitializer erledigt. (aosp/1608813)

    Wenn Sie tools:node="remove"ContentProvider verwendet haben, um den Prozesslebenszyklus zu initialisieren, müssen Sie stattdessen Folgendes tun.

     <provider
        android:name="androidx.startup.InitializationProvider"
        android:authorities=\"${applicationId}.androidx-startup"
        android:exported="false"
        tools:node=\"merge">
        <!-- If you are using androidx.startup to initialize other components -->
        <meta-data
            android:name="androidx.work.impl.WorkManagerInitializer"
            android:value="androidx.startup"
            tools:node="remove" />
     </provider>
    

    (oder)

     <!-- If you want to disable android.startup completely. -->
     <provider
        android:name="androidx.startup.InitializationProvider"
        android:authorities="${applicationId}.androidx-startup"
        tools:node="remove">
     </provider>
    

API-Änderungen

  • Fügen Sie eine Result.getOutputData()-API hinzu, die die outputData des ListenableWorker zurückgibt. (Ie51e3)

Fehlerkorrekturen

  • Es wurde eine Problemumgehung für einen OEM-Fehler hinzugefügt, der dazu führt, dass bei Verwendung von AlarmManager-APIs ein SecurityException ausgelöst wird. (aosp/1587518)

Version 2.5.0

Version 2.5.0

27. Januar 2021

androidx.work:work-*:2.5.0 ist veröffentlicht. Version 2.5.0 enthält diese Commits.

Wichtige Änderungen seit Version 2.4.0

  • Ein neues :work:work-multiprocess-Artefakt für Apps, die mehrere Prozesse verwenden. Dadurch wird die Leistung verbessert, da die Planung von Arbeitsanfragen in einem einzigen Prozess zusammengefasst wird.
    • Wenn Sie work-multiprocess verwenden möchten, definieren Sie eine Abhängigkeit von: implementation "androidx.work:work-multiprocess:2.5.0"
    • Legen Sie mit Configuration.Builder.setDefaultProcessName(String) einen primären Prozess fest.
    • Wenn Sie work-multiprocess verwenden, sollten Sie auch RemoteWorkManager verwenden, um Ihre WorkRequests zu verwalten. RemoteWorkManager kommuniziert immer mit dem dafür vorgesehenen Prozess. Der In-Process-Scheduler wird ebenfalls im dafür vorgesehenen Prozess ausgeführt.
  • Manchmal kann ActivityManager die JobService-Instanz nicht instanziieren, um einen Job zu starten. Dadurch wird der zugrunde liegende Job aufgrund eines Plattformfehlers stillschweigend gelöscht. WorkManager sorgt jetzt dafür, dass es für jede einzelne WorkRequest Sicherungsjobs gibt, wenn ein Application durch Abgleichsjobs initialisiert wird. Dadurch wird die Zuverlässigkeit der Jobausführung erheblich verbessert. (b/172475041, aosp/1489577)
  • WorkManager begrenzt das Datenbankwachstum, indem die Pufferdauer reduziert wird, in der WorkRequest nach Abschluss einer WorkRequest erfasst werden. Die Dauer betrug zuvor 7 Tage. Sie wurde auf 1 Tage + die Dauer von keepResultsForAtLeast reduziert. (aosp/1419708)
  • Die TestListenableWorkerBuilder unterstützt jetzt die reifizierte Klasse, die ListenableWorker erweitert, um das Testen zu vereinfachen. (aosp/1443299, b/169787349)
  • Der WorkManager-Inspector ist jetzt in Android Studio Arctic Fox verfügbar.

Version 2.5.0-rc01

13. Januar 2021

androidx.work:work-*:2.5.0-rc01 ist veröffentlicht. Version 2.5.0-rc01 enthält diese Commits.

Fehlerkorrekturen

  • Ein Fehler wurde behoben, bei dem getWorkInfosLiveData nach der Aktualisierung von Einheiten bei Verwendung der WorkQuery-basierten API nicht richtig ungültig gemacht wurde. (aosp/1540566, b/173769028)
  • Es wurde ein Fehler behoben, durch den Datenbanktransaktionen in seltenen Fällen nicht als erfolgreich markiert wurden. Das führt auf einigen Motorola-Geräten zu Problemen. (aosp/1535368, b/175944460)
  • Ein Fehler wurde behoben, durch den NoSuchElementExceptions ignoriert wurden, wenn versucht wurde, die Bindung an einen beendeten Prozess aufzuheben. (aosp/1530589)
  • Verbessere ConstraintTrackingWorker so, dass nur ein ListenableWorker beendet wird, wenn es noch nicht beendet wurde. (aosp/1496844, b/172946965)
  • androidx.work-Bibliotheken für Java 8 aktualisieren (Ibd2f2)

Version 2.5.0-beta02

2. Dezember 2020

androidx.work:work-*:2.5.0-beta02 ist veröffentlicht. Version 2.5.0-beta02 enthält diese Commits.

Fehlerkorrekturen

  • Ein Fehler in androidx.work:work-multiprocess wurde behoben, bei dem WorkManager den aufrufenden Thread versehentlich blockierte, als versucht wurde, eine Verbindung zum angegebenen Prozess herzustellen. (aosp/1475538)
  • Ein Fehler wurde behoben, bei dem PeriodicWorkRequest nicht richtig abgeglichen wurden. (b/172475041, aosp/1489577)
  • Es wurde eine Problemumgehung für einen Plattformfehler beim Beenden des Dienstes im Vordergrund bei Verwendung der setForeground* APIs hinzugefügt. (b/170924044, aosp/1489901)

Version 2.5.0-beta01

28. Oktober 2020

androidx.work:work-*:2.5.0-beta01 ist veröffentlicht. Version 2.5.0-beta01 enthält diese Commits.

Neue Funktionen

  • WorkManager drosselt automatisch die Anzahl der WorkRequests, die vom In-Process-Scheduler aufgenommen werden können. Die Anfragen werden weiterhin in der Reihenfolge ihres Eingangs ausgeführt. (aosp/1455228)
  • WorkManager versucht, die Daten wiederherzustellen, wenn sich der Datenspeicher der Anwendung in einem fehlerhaften Zustand befindet. (aosp/1463103)

Fehlerkorrekturen

  • Wenn ListenableWorker unterbrochen werden, markieren Sie sie sofort als ENQUEUED, damit sie später neu geplant werden können. (aosp/1455618, b/170273988)

Version 2.5.0-alpha03

14. Oktober 2020

androidx.work:work-*:2.5.0-alpha03 ist veröffentlicht. Version 2.5.0-alpha03 enthält diese Commits.

API-Änderungen

  • TestListenableWorkerBuilder und TestWorkerBuilder verwenden keine Rohdatentypen. (I883ad, b/169787349)

Fehlerkorrekturen

  • Mit ApplicationInfo können Sie den Namen des Standard-App-Prozesses ermitteln. (b/168716641, aosp/1429950)
  • Korrigieren Sie die Sichtbarkeitsregeln für RemoteWorkManager und RemoteWorkContinuation. Diese APIs sind nicht mehr als @Restricted gekennzeichnet. (aosp/1432091)
  • Korrigieren Sie die ProGuard-Regeln für :work:work-multiprocess. (aosp/1432091)
  • Der Benachrichtigungslebenszyklus für lang andauernde Aufgaben, die an einen Dienst im Vordergrund gebunden sind, wurde verbessert. (b/168502234, aosp/1431331)

Version 2.5.0-alpha02

16. September 2020

androidx.work:work-*:2.5.0-alpha02 ist veröffentlicht. Version 2.5.0-alpha02 enthält diese Commits.

Neue Funktionen

  • Fügen Sie WorkQuery eine API hinzu, damit Sie ids verwenden können, um WorkInfos abzufragen. (aosp/1412372, b/157335295)
  • WorkManager unterstützt Apps, die mehrere Prozesse verwenden, besser mit einem neuen Artefakt (androidx.work:work-multiprocess:*). Dieses neue Artefakt hilft, einige Probleme zu lösen, die bei großen Apps auftreten, darunter:
    • WorkManager muss in der Regel in jedem App-Prozess initialisiert werden. Das ist nicht optimal, da es zu mehr SQLite-Konflikten kommt, was wiederum andere Probleme verursacht. WorkManager bietet jetzt neue APIs, mit denen Sie mit Configuration#setDefaultProcessName(processName) einen primären App-Prozess festlegen können. processName ist ein voll qualifizierter Prozessname, der so aussieht: packageName:processName (z.B. com.example:remote).
    • Eine Reihe neuer APIs: RemoteWorkManager und RemoteWorkContinuation bis enqueue, cancel und query Arbeitsanfragen. Diese APIs enthalten keine LiveData-Varianten, um SQLite-Konflikte zwischen mehreren Prozessen zu vermeiden. Alle Aufrufe von enqueue, cancel und query werden mithilfe von AIDL an einen primary-App-Prozess weitergeleitet und geben einen flüssigen ListenableFuture zurück. (aosp/1392657, aosp/1411210, aosp/1412215, aosp/1417713)

API-Änderungen

  • WorkManager löscht jetzt abgeschlossene WorkRequests ohne unvollständige Abhängigkeiten aggressiver. Die Pufferdauer wurde von 7 Tagen auf 1 Tag geändert. (aosp/1419708)

Fehlerkorrekturen

  • WorkManager gleicht Jobs jetzt proaktiv ab, sodass WorkRequest- und JobScheduler-Jobs synchronisiert werden, wenn WorkManager initialisiert wird. (aosp/1412794, b/166292069)

Version 2.5.0-alpha01

19. August 2020

androidx.work:work-*:2.5.0-alpha01 ist veröffentlicht. Version 2.5.0-alpha01 enthält diese Commits.

Neue Funktionen

  • Änderungen an internen APIs, die es uns ermöglichen, in Zukunft bessere Tools mit WorkManager bereitzustellen. Wir halten Sie auf dem Laufenden.

Fehlerkorrekturen

  • Behandlung von SecurityException beim Erfassen des Netzwerkstatus auf einigen Geräten. (aosp/1396969)

Externer Beitrag

Version 2.4.0

Version 2.4.0

22. Juli 2020

androidx.work:work-*:2.4.0 ist veröffentlicht. Version 2.4.0 enthält diese Commits.

Wichtige Änderungen seit Version 2.3.0

  • Der In-Process-Scheduler von WorkManager ist jetzt leistungsfähiger. Bisher wurden bei der In-Process-Scheduler nur Arbeiten ausgeführt, die nicht verzögert wurden und deren Einschränkungen erfüllt waren. Der In-Process-Scheduler verfolgt jetzt WorkRequests, die in Zukunft ausgeführt werden könnten, einschließlich PeriodicWorkRequests. Das In-Process-Scheduler unterliegt auch keinen Planungsbeschränkungen, ist aber weiterhin auf die Größe des Executor beschränkt, das von WorkManager verwendet wird. Das bedeutet, dass die Anwendung jetzt viel mehr WorkRequests ausführen kann, wenn sie im Vordergrund ist. Zur Verwaltung der Ausführung verzögerter Aufgaben im Vordergrund wird in WorkManager auch ein neues konfigurierbares RunnableScheduler eingeführt. (aosp/1185778)
  • WorkManager unterstützt jetzt RxJava 3. Wenn Sie RxJava 3 verwenden möchten, müssen Sie die folgende Abhängigkeit einfügen: implementation "androidx.work:work-rxjava3:2.4.0". (aosp/1277904)
  • Es wurde die Möglichkeit hinzugefügt, WorkInfos mithilfe eines WorkQuery abzufragen. Das ist nützlich, wenn Entwickler WorkInfos anhand einer Kombination aus mehreren Attributen abfragen möchten. Weitere Informationen finden Sie unter WorkQuery.Builder.fromStates(...), WorkQuery.Builder. fromTags(...) oder WorkQuery.Builder.fromUniqueWorkNames(...). (aosp/1253230, b/143847546)
  • Fügen Sie die Möglichkeit hinzu, Diagnoseinformationen von WorkManager anzufordern, indem Sie Folgendes verwenden:

    adb shell am broadcast -a "androidx.work.diagnostics.REQUEST_DIAGNOSTICS" -p "<your_app_package_name>"
    

    Sie enthält viele nützliche Informationen, darunter:

    • WorkRequests, die in den letzten 24 Stunden abgeschlossen wurden.
    • WorkRequests, die derzeit ausgeführt werden.
    • Geplante Arbeitsanfragen. (aosp/1235501)
  • Fügen Sie ExistingWorkPolicy.APPEND_OR_REPLACE hinzu. Das ist ähnlich wie APPEND, ersetzt aber eine Kette, bei der Voraussetzungen abgebrochen oder fehlgeschlagen sind. (b/134613984, aosp/1199640)

  • Es ist möglich, ein benutzerdefiniertes RunnableScheduler hinzuzufügen, um WorkRequests zu verfolgen, die in Zukunft ausgeführt werden müssen. Wird vom In-Process-Scheduler verwendet. (aosp/1203944)

  • Unterstützung für das dynamische Hinzufügen von Factories zum Delegieren bei Verwendung von DelegatingWorkerFactory hinzugefügt. (b/156289105, aosp/1309745)

  • Das Tracking für BATTERY_NOT_LOW-Einschränkungen wird besser an die Plattform angepasst. (aosp/1312583)

  • Der In-Process-Scheduler verwendet jetzt bessere APIs, um den Namen des Prozesses zu ermitteln. Das ist nützlich, um Apps, die mehrere Prozesse verwenden, besser zu unterstützen. (aosp/1324732)

  • Neue Lint-Regeln, die Folgendes erzwingen:

    • Verwendung der richtigen foregroundServiceType bei Verwendung von setForegroundAsync()-APIs. (b/147873061, aosp/1215915)
    • Angabe von JobScheduler-IDs, die WorkManager verwenden soll, wenn JobService-APIs direkt verwendet werden. aosp/1223567
    • Es wurde eine neue Lint-Regel hinzugefügt, die dafür sorgt, dass ListenableWorker-Implementierungen jetzt public sind, wenn die Standard-WorkerFactory verwendet wird. (aosp/1291262)
  • Aufrufe von setForegroundAsync(), die nicht vor Abschluss eines ListenableWorker abgeschlossen werden, werden jetzt über ein IllegalStateException im zurückgegebenen ListenableFuture signalisiert. (aosp/1262743)

  • Es wurde ein Fehler behoben, durch den ForegroundService nicht beendet wurde, nachdem ein Worker im Vordergrund unterbrochen wurde. (b/155579898, aosp/1302153)

  • Ein Fehler wurde behoben, bei dem WorkManager versucht, mehrere Instanzen von Worker auszuführen, die an einen Vordergrunddienst gebunden sind (b/156310133, aosp/1309853).

Version 2.4.0-rc01

24. Juni 2020

androidx.work:work-*:2.4.0-rc01 ist veröffentlicht. Version 2.4.0-rc01 enthält diese Commits.

Fehlerkorrekturen

  • Der In-Process-Scheduler verwendet jetzt bessere APIs, um den Namen des Prozesses zu ermitteln. Das ist nützlich, um Apps, die mehrere Prozesse verwenden, besser zu unterstützen. (aosp/1324732)

Version 2.4.0-beta01

20. Mai 2020

androidx.work:work-gcm:2.4.0-beta01, androidx.work:work-runtime:2.4.0-beta01, androidx.work:work-runtime-ktx:2.4.0-beta01, androidx.work:work-rxjava2:2.4.0-beta01 und androidx.work:work-testing:2.4.0-beta01 sind veröffentlicht. Version 2.4.0-beta01 enthält diese Commits.

Fehlerkorrekturen

  • Es wurde ein Fehler behoben, durch den ForegroundService nicht beendet wurde, nachdem ein Worker im Vordergrund unterbrochen wurde. (b/155579898, aosp/1302153)
  • Ein Fehler wurde behoben, bei dem WorkManager versucht, mehrere Instanzen von Worker auszuführen, die an einen Vordergrunddienst gebunden sind (b/156310133, aosp/1309853).
  • Unterstützung für das dynamische Hinzufügen von Factories zum Delegieren bei Verwendung von DelegatingWorkerFactory hinzugefügt. (b/156289105, aosp/1309745)
  • Das Tracking für BATTERY_NOT_LOW-Einschränkungen wird besser an die Plattform angepasst. (aosp/1312583)

Version 2.4.0-alpha03

29. April 2020

androidx.work:work-*:2.4.0-alpha03 ist veröffentlicht. Version 2.4.0-alpha03 enthält diese Commits.

Neue Funktionen

  • WorkManager unterstützt jetzt RxJava 3. Wenn Sie RxJava 3 verwenden möchten, müssen Sie die folgende Abhängigkeit einfügen: implementation "androidx.work:work-rxjava3:2.4.0-alpha03". (aosp/1277904)
  • Es wurde eine neue Lint-Regel hinzugefügt, die dafür sorgt, dass ListenableWorker-Implementierungen jetzt public sind, wenn die Standard-WorkerFactory verwendet wird. (aosp/1291262)

API-Änderungen

  • Wenn Sie setProgressAsync() aufrufen, nachdem die Ausführung eines ListenableWorker abgeschlossen ist, wird jetzt über die ListenableFuture ein Exception signalisiert. (aosp/1285494)
  • WorkQuery.Builder ist jetzt mit final gekennzeichnet. (aosp/1275037)
  • Die WorkQuery.Builder-Factory-Methoden withStates, withTags und withUniqueWorkNames wurden in fromStates, fromTags bzw. fromUniqueWorkNames umbenannt. (aosp/1280287)

Fehlerkorrekturen

Version 2.4.0-alpha02

1. April 2020

androidx.work:work-*:2.4.0-alpha02 ist veröffentlicht. Version 2.4.0-alpha02 enthält diese Commits.

Neue Funktionen

  • Es wurde eine neue Lint-Regel hinzugefügt, die warnt, wenn für WorkRequest sowohl Constraints.setRequiresCharging(...) als auch Constraints.setRequiresDeviceIdle(...) erforderlich sind. Einige Geräte werden nie gleichzeitig geladen und sind inaktiv. Solche Anfragen würden also seltener als erwartet ausgeführt. (aosp/1253840)

API-Änderungen

  • Es wurde die Möglichkeit hinzugefügt, WorkInfos mithilfe eines WorkQuery abzufragen. Das ist nützlich, wenn Entwickler WorkInfos anhand einer Kombination aus mehreren Attributen abfragen möchten. Weitere Informationen finden Sie unter WorkQuery.Builder withStates(...), WorkQuery.Builder withTags(...) oder WorkQuery.Builder withUniqueWorkNames(...). (aosp/1253230, b/143847546)

  • Aufrufe von setForegroundAsync(), die nicht vor Abschluss eines ListenableWorker abgeschlossen werden, werden jetzt über ein IllegalStateException im zurückgegebenen ListenableFuture signalisiert. (aosp/1262743)

Fehlerkorrekturen

  • Die Lint-Regel, mit der nach ungültigen Intervallzeiträumen für PeriodicWorkRequest gesucht wird, wurde korrigiert. (aosp/1254846, b/152606442)

Version 2.4.0-alpha01

4. März 2020

androidx.work:work-*:2.4.0-alpha01 ist veröffentlicht. Version 2.4.0-alpha01 enthält diese Commits.

Neue Funktionen

  • Der In-Process-Scheduler von WorkManager ist jetzt leistungsfähiger. Bisher hat der In-Process-Scheduler nur die Ausführung von Aufgaben in Betracht gezogen, die nicht verzögert wurden und deren Einschränkungen erfüllt waren. Der In-Process-Scheduler verfolgt jetzt WorkRequest, die in Zukunft ausgeführt werden könnten, einschließlich PeriodicWorkRequest. Der In-Process-Scheduler berücksichtigt keine Planungslimits (ist aber weiterhin auf die Größe des von WorkManager verwendeten Executor beschränkt). Das bedeutet, dass die Anwendung jetzt viel mehr WorkRequests ausführen kann, wenn sie im Vordergrund ausgeführt wird. (aosp/1185778)

  • Es wurde die Möglichkeit hinzugefügt, mit adb shell am broadcast -a "androidx.work.diagnostics.REQUEST_DIAGNOSTICS" -p "<your_app_package_name>" Diagnoseinformationen von WorkManager anzufordern. Sie enthält viele nützliche Informationen, darunter:

    • WorkRequests, die in den letzten 24 Stunden abgeschlossen wurden.
    • WorkRequests, die derzeit ausgeführt werden.
    • Geplante Arbeitsanfragen. (aosp/1235501)
  • Neue Lint-Regeln, die Folgendes erzwingen:

    • Verwendung des richtigen foregroundServiceType bei Verwendung von setForegroundAsync()-APIs. (b/147873061, aosp/1215915)
    • Angabe von JobScheduler-IDs, die WorkManager bei der direkten Verwendung von JobService-APIs verwenden soll. (aosp/1223567)

API-Änderungen

  • Fügen Sie ExistingWorkPolicy.APPEND_OR_REPLACE hinzu. Das ist ähnlich wie APPEND, aber ersetzt eine Kette, bei der Voraussetzungen abgebrochen oder fehlgeschlagen sind. (b/134613984, aosp/1199640)

  • Es soll möglich sein, ein benutzerdefiniertes RunnableScheduler hinzuzufügen, um WorkRequest zu verfolgen, die in Zukunft ausgeführt werden müssen. Wird vom In-Process-Scheduler verwendet. (aosp/1203944)

Fehlerkorrekturen

  • setProgress() in RxWorker wurde eingestellt, da zuvor ein Single<Void> zurückgegeben wurde, was ein unmöglicher Typ ist. Wir haben eine neue API setCompletableProgress() hinzugefügt, die stattdessen Completable zurückgibt, und neue Lint-Regeln, die bei der Migration zu den neuen APIs helfen. (b/150080946, aosp/1242665)

Version 2.3.4

Version 2.3.4

18. März 2020

androidx.work:work-*:2.3.4 ist veröffentlicht. Version 2.3.4 enthält diese Commits.

Fehlerkorrekturen

  • Ein Fehler wurde behoben, der dazu führte, dass mehrere Instanzen eines lang andauernden Worker ausgeführt wurden, nachdem das Ausführungsfenster von 10 Minuten überschritten wurde. (aosp/1247484, b/150553353)
  • Korrektur für den Lint-Fehler IssueRegistry von WorkManager. Vielen Dank an @ZacSweers von Slack für den Beitrag. (aosp/1217923)

Version 2.3.3

Version 2.3.3

4. März 2020

androidx.work:work-*:2.3.3 ist veröffentlicht. Version 2.3.3 enthält diese Commits.

Fehlerkorrekturen

  • Ein Fehler wurde behoben, bei dem eine unterbrochene Worker nicht richtig neu geplant wurde. (b/150325687, aosp/1246571)

Version 2.3.2

Version 2.3.2

19. Februar 2020

androidx.work:work-*:2.3.2 werden veröffentlicht. Version 2.3.2 enthält diese Commits.

Fehlerkorrekturen

  • Ein Problem wurde behoben, bei dem WorkManager in seltenen Fällen das Limit von 100 Jobs in JobScheduler überschritt. (aosp/1226859, b/149092520)
  • Problem mit Race-Bedingung in ConstraintControllers behoben. (aosp/1220100)
  • Der Lebenszyklus von Diensten im Vordergrund für Worker mit langer Ausführungszeit wurde verbessert. (aosp/1226295)
  • Die Verwaltung der Stornierung von Benachrichtigungen für lang laufende Worker bei der Stornierung von Workern wurde verbessert. (aosp/1228346)

Version 2.3.1

Version 2.3.1

5. Februar 2020

androidx.work:work-*:2.3.1 ist veröffentlicht. Version 2.3.1 enthält diese Commits.

Diverse Fehlerkorrekturen

  • Den Lebenszyklus von Notifications für lang andauernde Workers besser verwalten, die ausgeführt werden, wenn ein Service im Vordergrund aktiv ist. (aosp/1218539, b/147249312)
  • WorkManager hängt jetzt von androidx.sqlite:sqlite-framework:2.1.0 stable ab. (aosp/1217729)
  • Es wurden Lint-Regeln hinzugefügt, um sicherzustellen, dass bei der Verwendung von foregroundServiceType in ForegroundInfo ein foregroundServiceType in AndroidManifest.xml angegeben wird. (aosp/1214207, b/147873061)

Version 2.3.0

Version 2.3.0

22. Januar 2020

androidx.work:work-*:2.3.0 wird ohne Änderungen seit 2.3.0-rc01 veröffentlicht. Version 2.3.0 enthält diese Commits.

Wichtige Änderungen seit Version 2.2.0

  • Unterstützung für lang andauernde oder wichtige Aufgaben über ListenableWorker#setForegroundAsync().
  • Unterstützung für den Worker-Fortschritt über ListenableWorker#setProgressAsync().
  • WorkManager enthält jetzt zusätzliche Lint-Regeln als Teil der Bibliothek, mit denen Fehler frühzeitig erkannt werden können.

Version 2.3.0-rc01

8. Januar 2020

androidx.work:work-*:2.3.0-rc01 ist veröffentlicht. Version 2.3.0-rc01 enthält diese Commits.

Diese Version ist identisch mit 2.3.0-beta02

Diverse Fehlerkorrekturen

  • Das work-testing-Artefakt definiert jetzt eine api-Abhängigkeit von work-runtime-ktx. (aosp/1194410)

Version 2.3.0-beta02

18. Dezember 2019

androidx.work:work-*:2.3.0-beta02 ist veröffentlicht. Version 2.3.0-beta02 enthält diese Commits.

Neue Funktionen

  • Es wurde eine bessere Fehlermeldung für nicht behebbares SQLite-Ausnahmen hinzugefügt. (aosp/1185777)
  • Es wurde eine Lint-Regel hinzugefügt, die dafür sorgt, dass der Content-Provider androidx.work.impl.WorkManagerInitializer aus AndroidManifest.xml entfernt wird, wenn die On-Demand-Initialisierung verwendet wird. (aosp/1167007)
  • Es wurde eine Lint-Warnung hinzugefügt, wenn enqueue() für ein PeriodicWorkRequest anstelle von enqueueUniquePeriodicWork() verwendet wird. (aosp/1166032)

API-Änderungen

  • Bei ForegroundInfo müssen Sie jetzt notificationId angeben, wenn Sie ListenableWorker.setForegroundAsync() verwenden. Dies ist eine funktionsgefährdende Änderung. So können Sie mehrere lang andauernde Workers parallel ausführen. WorkManager verwaltet auch die Lebensdauer der bereitgestellten Notifications besser. (b/145473554, aosp/1181208, asop/1181216, asop/1183577)

Diverse Fehlerkorrekturen

  • Ein Fehler in der AlarmManager-Implementierung wurde behoben, bei dem Alarme nicht richtig bereinigt wurden. (aosp/1156444)
  • Ein Fehler wurde behoben, durch den bei einer leeren Liste von WorkRequests eine falsche WorkContinuation-Kette erstellt wurde. (b/142835274, aosp/1157051)

Änderungen an Abhängigkeiten

  • WorkManager verwendet jetzt Room 2.2.2.

Version 2.3.0-beta01

20. November 2019

androidx.work:work-*:2.3.0-beta01 ist veröffentlicht. Version 2.3.0-beta01 enthält diese Commits.

Neue Funktionen

  • Es wurde eine neue Lint-Regel hinzugefügt, die Entwicklerfehler aufgrund einer falschen Implementierung von androidx.work.Configuration.Provider bei Verwendung der On-Demand-Initialisierung verhindert. aosp/1164559

Version 2.3.0-alpha03

23. Oktober 2019

androidx.work:work-*:2.3.0-alpha03 ist veröffentlicht. Version 2.3.0-alpha03 enthält diese Commits.

Neue Funktionen

  • Die WorkManager.createCancelPendingIntent() API wurde hinzugefügt, mit der sich WorkRequests einfach abbrechen lassen, ohne dass eine weitere Komponente in der AndroidManifest.xml registriert werden muss. Mit dieser API lassen sich WorkRequests besonders einfach über Notifications kündigen. Wir gehen davon aus, dass dies mit den neuen APIs für den Vordergrund in Version 2.3.0 einhergeht.
  • WorkManager hängt jetzt von androidx.room:*:2.2.0 stable ab.

API-Änderungen

  • ForegroundInfo.getNotificationType() wurde in ForegroundInfo.getForegroundServiceType() umbenannt, um besser mit den zugrunde liegenden Plattform-APIs übereinzustimmen. (b/142729893, aosp/1143316)

Diverse Fehlerkorrekturen

  • Ein Fehler wurde behoben, der durch einen unnötigen Aufruf von setTransactionSuccessful() außerhalb einer Transaktion verursacht wurde. Das passiert bei seltenen Migrationen. (b/142580433, aosp/1141737)

Version 2.3.0-alpha02

9. Oktober 2019

androidx.work:work-*:2.3.0-alpha02 ist veröffentlicht. Version 2.3.0-alpha02 enthält diese Commits.

Neue Funktionen

  • WorkManager unterstützt jetzt die Ausführung von zeitaufwendigen oder wichtigen Aufgaben, die vom Betriebssystem aktiv gehalten werden sollen. Weitere Informationen finden Sie unter ListenableWorker#setForegroundAsync() (oder CoroutineWorker#setForeground() für Kotlin). (aosp/1133636)

API-Änderungen

  • Die containsKey API in Data wurde in hasKeyWithValueOfType umbenannt. Die entsprechende Erweiterungsmethode in der ktx-Bibliothek wurde ebenfalls umbenannt. (b/141916545)

Diverse Fehlerkorrekturen

  • WorkManager plant die Ausführung von Tasks fair, wenn die Anzahl der in die Warteschlange eingereihten WorkRequests sich den Planungslimits nähert. (aosp/1105766)
  • WorkManager ruft ListenableWorker#onStopped() nur auf, wenn die Arbeit noch nicht abgeschlossen ist. (b/140055777)
  • WorkManager entfernt jetzt Fortschrittsinformationen, wenn ein Worker unterbrochen wird oder den Endstatus erreicht. (aosp/1114572)
  • Data hat jetzt eine viel nützlichere toString()-Darstellung. (b/140945323)
  • Data hat jetzt eine bessere equals()-Methode. Außerdem wird deepEquals für Array-Typen unterstützt. (b/140922528)
  • WorkManager speichert seine interne Datenbank und die Einstellungsdateien jetzt in einem Verzeichnis, das nicht gesichert wird. (b/114808216)

Version 2.3.0-alpha01

22. August 2019

androidx.work:work-*:2.3.September 5, 20190-alpha01 ist veröffentlicht. Die in dieser Version enthaltenen Commits finden Sie hier.

Neue Funktionen

  • ListenableWorker können jetzt den Fortschritt über die setProgressAsync() API festlegen. Außerdem wurde in CoroutineWorker eine entsprechende suspend-API setProgress und in RxWorker eine setProgress hinzugefügt, die ein Single<Void> zurückgibt. Mit diesen neuen APIs können Worker Fortschrittsinformationen über WorkInfo übermitteln. Dafür gibt es eine entsprechende getProgress API. (b/79481554)
  • Data hat eine containsKey()-API, mit der sich prüfen lässt, ob die Eingabedaten für Worker Schlüssel mit dem erwarteten Typ enthalten. (b/117136838)
  • Data kann jetzt mit Data.toByteArray() und Data.fromByteArray() serialisiert werden. Beachten Sie, dass es bei Data keine Versionsgarantien gibt. Sie sollten sie daher nicht beibehalten oder für die IPC zwischen Anwendungen verwenden. Sie können nur sicher zwischen mehreren Prozessen derselben Anwendung verwendet werden.
  • Es wurde die Möglichkeit hinzugefügt, ein InputMergerFactory über Configuration.setInputMergerFactory anzugeben. (b/133273159)

API-Änderungen

  • WorkManager löst eine Instanz von IllegalStateException aus, wenn ein WorkerFactory eine Instanz von ListenableWorker zurückgibt, die zuvor aufgerufen wurde. (b/139554406)
  • Dokumentationsaktualisierungen zur ListenableFuture-Kündigung und zum onStopped()-Callback in ListenableWorker. (b/138413671)

Diverse Fehlerkorrekturen

  • Der In-Process-Scheduler ignoriert jetzt WorkRequests mit der Einschränkung idle. Diese Anfragen werden jetzt nur noch von JobScheduler erfasst, wenn das Gerät tatsächlich idle ist. (aosp/1089779)
  • TestScheduler verwendet jetzt in Tests korrekt die angegebene Executor für die interne Aufgabenbearbeitung. (aosp/1090749)

Version 2.2.0

Version 2.2.0

15. August 2019

androidx.work:work-*:2.2.0 ist veröffentlicht. Die in dieser Version enthaltenen Commits finden Sie hier.

Dieser Release ist identisch mit androidx.work:work-*:2.2.0-rc01.

Wichtige Änderungen in Version 2.2.0 im Vergleich zu Version 2.1.0

androidx.work:work-gcm:2.2.0 ist ein neues Maven-Artefakt, das die Verwendung von GCMNetworkManager als Scheduler unterstützt, wenn Google Play-Dienste für API-Ebenen <= 22 verfügbar sind. Dies ist eine optionale Abhängigkeit, die für eine zuverlässigere und leistungsstärkere Hintergrundverarbeitung in älteren API-Versionen sorgt. Wenn Ihre App Google Play-Dienste verwendet, fügen Sie diese Abhängigkeit Ihrer Gradle-Datei hinzu, um automatisch Unterstützung für GCMNetworkManager zu erhalten. Wenn die Play-Dienste nicht verfügbar sind, greift WorkManager auf älteren Geräten weiterhin auf AlarmManager zurück.

Version 2.2.0-rc01

30. Juli 2019

androidx.work:work-*:2.2.0-rc01 ist veröffentlicht. Die in dieser Version enthaltenen Commits finden Sie hier.

Diverse Fehlerkorrekturen

  • Ein Fehler in der AlarmManager-Implementierung wurde behoben, der dazu führte, dass der Dienst vorzeitig heruntergefahren wurde und in seltenen Fällen ein RejectedExecutionException angezeigt wurde. (aosp/1092374) (b/138238197).
  • Es wurde eine Problemumgehung für einen NullPointerException bei der Verwendung von JobScheduler APIs auf einigen Geräten hinzugefügt. (aosp/1091020) (b/138364061), (b/138441699)

Version 2.2.0-beta02

19. Juli 2019

androidx.work:work-*:2.2.0-beta02 ist veröffentlicht. Die in dieser Version enthaltenen Commits finden Sie hier.

Diverse Fehlerkorrekturen

  • Die unbeabsichtigte Jacoco-Abhängigkeit, die in 2.2.0-beta01 eingeführt wurde, wurde entfernt.

Version 2.2.0-beta01

17. Juli 2019

androidx.work:work-*:2.2.0-beta01 ist veröffentlicht. Die in dieser Version enthaltenen Commits finden Sie hier.

Neue Funktionen

  • androidx.work:work-gcm:2.2.0-beta01 ist ein neues Maven-Artefakt, das die Verwendung von GCMNetworkManager als Scheduler unterstützt, wenn Google Play-Dienste für API-Ebenen <= 22 verfügbar sind. Dies ist eine optionale Abhängigkeit, die für eine zuverlässigere und leistungsstärkere Hintergrundverarbeitung bei älteren API-Versionen sorgt. Wenn Ihre App Google Play-Dienste verwendet, fügen Sie diese Abhängigkeit Ihrer Gradle-Datei hinzu, um automatisch Unterstützung für GCMNetworkManager zu erhalten. Wenn Play-Dienste nicht verfügbar sind, greift WorkManager auf älteren Geräten weiterhin auf AlarmManager zurück.

Diverse Fehlerkorrekturen

  • Problem mit IllegalArgumentException bei der Erfassung des Netzwerkstatus auf Nvidia Shield K1-Tablets behoben. (aosp/1010188)

Version 2.1.0

Version 2.1.0

11. Juli 2019

androidx.work:work-*:2.1.0 ist veröffentlicht. Dieser Release ist identisch mit androidx.work:work-*:2.1.0-rc01.

Wichtige Änderungen seit Version 2.0.1

  • Für work-runtime-ktx ist jetzt Java 8 erforderlich. Sollten Probleme auftreten, können Sie Folgendes zu Ihrem build.gradle hinzufügen: kotlinOptions { jvmTarget = "1.8" }
  • On-Demand-Initialisierung für WorkManager hinzugefügt. WorkManager wird nur erstellt, wenn darauf verwiesen wird. b/127497100 So richten Sie Ihr Projekt für die On-Demand-Initialisierung ein:
    1. Automatischen Initialisierer deaktivieren
    2. Implementieren Sie Configuration.Provider für Ihr benutzerdefiniertes Application-Objekt.
    3. Ändern Sie alle Verweise auf WorkManager.getInstance() in WorkManager.getInstance(Context). Im Rahmen dieser Änderung haben wir WorkManager.getInstance() eingestellt. Es ist immer sicherer, den neuen WorkManager.getInstance(Context)-Ersatz aufzurufen, auch wenn Sie keine On-Demand-Initialisierung durchführen.
  • PeriodicWorkRequest unterstützen jetzt anfängliche Verzögerungen. Mit der Methode setInitialDelay für PeriodicWorkRequest.Builder können Sie eine anfängliche Verzögerung festlegen. b/111404867
  • Es wurde die Möglichkeit hinzugefügt, die -Funktion mit DelegatingWorkerFactory an einen oder mehrere registrierte WorkerFactorys zu delegieren. b/131435993
  • Es wurde die Möglichkeit hinzugefügt, die Executor anzupassen, die von WorkManager für alle internen Verwaltungsaufgaben über Configuration.Builder.setTaskExecutor verwendet wird.
  • Es wurde die Möglichkeit hinzugefügt, mithilfe von TestWorkerBuilder und TestListenableWorkerBuilder im work-testing-Artefakt Worker- und ListenableWorker-Klassen zu erstellen, die sich für Unittests eignen.
    • work-testing zieht jetzt Kotlin als Abhängigkeit ein und enthält standardmäßig mehrere Kotlin-Erweiterungen.
  • WorkInfo wurde die Anzahl der Ausführungsversuche hinzugefügt. b/127290461
  • Data-Typen können jetzt Byte und Byte-Arrays speichern und abrufen. Dadurch wird die maximale Größe von Data-Objekten NICHT geändert.
  • WorkManager hängt jetzt von Room 2.1.0 ab, wodurch einige Datenbankprobleme behoben werden sollten.

Version 2.1.0-rc01

27. Juni 2019

androidx.work:work-*:2.1.0-rc01 ist veröffentlicht. Die in dieser Version enthaltenen Commits finden Sie hier.

Diverse Fehlerkorrekturen

  • Ein Fehler wurde behoben, der zum Absturz einer Anwendung führte, wenn Jobs mit JobScheduler ausgeführt wurden, während eine Sicherung lief b/135858602.

Version 2.1.0-beta02

20. Juni 2019

androidx.work:work-*:2.1.0-beta02 ist veröffentlicht. Die in dieser Version enthaltenen Commits finden Sie hier.

Diverse Fehlerkorrekturen

  • TestListenableWorkerBuilder verwendet jetzt das richtige WorkerFactory beim Erstellen von Instanzen von ListenableWorker. b/135275844
  • Ein Fehler wurde behoben, der aufgrund von Prozessbeendigung zu Abweichungen bei den Ausführungszeiträumen für WorkRequest geführt hat. b/135272196

Version 2.1.0-beta01

13. Juni 2019

androidx.work:work-*:2.1.0-beta01 ist veröffentlicht. Die in dieser Version enthaltenen Commits finden Sie hier.

Diverse Fehlerkorrekturen

  • WorkManager hängt jetzt von Room 2.1.0 ab, wodurch einige Datenbankprobleme behoben werden sollten.
  • Einige E/A-Vorgänge der Startdisk wurden aus dem Hauptthread entfernt.
  • Ein potenzieller Deadlock beim Constraint-Tracking wurde behoben. b/134361006
  • Ungültige Jobs, die WorkManager zugeordnet sind, werden vorsorglich abgebrochen. b/134058261
  • Es wurden einige defensive Aufrufe zu JobScheduler-APIs für Geräte mit Fehlverhalten hinzugefügt.

Version 2.1.0-alpha03

5. Juni 2019

androidx.work:*:2.1.0-alpha03 ist veröffentlicht.

Diverse Fehlerkorrekturen

  • Verbesserte Dokumentation für PeriodicWorkRequest.
  • WorkManagerTestInitHelper verwendet jetzt den richtigen Hintergrund-Executor für Tests.
  • Es wurden Probleme mit SQLite behoben, die beim Umgang mit großen Transaktionen auf einigen Geräten auftreten konnten. (b/130182503)
  • Die Abhängigkeiten von WorkManager sind jetzt detaillierter. (b/133169148).
  • Umgang mit OEM-spezifischen Fehlern bei der Implementierung von JobScheduler beim Planen von Jobs mit WorkManager.
  • Verbesserungen im AlarmManager-basierten Scheduler in Bezug auf die Lebensdauer von Diensten, die zuvor zu seltenen Abstürzen geführt haben. (b/133313734)

Version 2.1.0-alpha02

16. Mai 2019

WorkManager 2.1.0-alpha02 wurde veröffentlicht. Diese Version enthält mehrere neue APIs.

API-Änderungen

  • PeriodicWorkRequest unterstützen jetzt anfängliche Verzögerungen. Mit der Methode setInitialDelay für PeriodicWorkRequest.Builder können Sie eine anfängliche Verzögerung festlegen. b/111404867

  • Es wurde die Möglichkeit hinzugefügt, die -Funktion mit DelegatingWorkerFactory an einen oder mehrere registrierte WorkerFactorys zu delegieren. b/131435993

  • Es wurde die Möglichkeit hinzugefügt, die Executor anzupassen, die von WorkManager für alle internen Verwaltungsaufgaben über Configuration.Builder.setTaskExecutor verwendet wird.

  • Die Dokumentation zu WorkRequest.keepResultsForAtLeast (b/130638001), zur On-Demand-Initialisierung und zu PeriodicWorkRequest.Builder (b/131711394) wurde verbessert.

Version 2.1.0-alpha01

24. April 2019

WorkManager 2.1.0-alpha01 wurde veröffentlicht. Diese Version enthält mehrere neue APIs. Ab dieser Version gibt es neue Funktionen, die nicht in die Version 1.x zurückportiert werden. Wir empfehlen, auf Version 2.x umzustellen.

API-Änderungen

  • Die On-Demand-Initialisierung für WorkManager wurde hinzugefügt. WorkManager wird nur erstellt, wenn darauf verwiesen wird. b/127497100 So richten Sie Ihr Projekt für die On-Demand-Initialisierung ein:
    1. Automatischen Initialisierer deaktivieren
    2. Implementieren Sie Configuration.Provider für Ihr benutzerdefiniertes Application-Objekt.
    3. Ändern Sie alle Verweise auf WorkManager.getInstance() in WorkManager.getInstance(Context). Im Rahmen dieser Änderung haben wir WorkManager.getInstance() eingestellt. Es ist immer sicherer, den neuen WorkManager.getInstance(Context)-Ersatz aufzurufen, auch wenn Sie keine On-Demand-Initialisierung durchführen.
  • Es wurde die Möglichkeit hinzugefügt, mithilfe von TestWorkerBuilder und TestListenableWorkerBuilder im work-testing-Artefakt Worker- und ListenableWorker-Klassen zu erstellen, die sich für Unittests eignen.
    • work-testing zieht jetzt Kotlin als Abhängigkeit ein, enthält aber auch standardmäßig mehrere Kotlin-Erweiterungen.
  • WorkInfo wurde die Anzahl der Ausführungsversuche hinzugefügt. b/127290461
  • Data-Typen können jetzt Bytes und Byte-Arrays speichern und abrufen. Dadurch wird die maximale Größe von Data-Objekten NICHT geändert.
  • CoroutineWorker.coroutineContext eingestellt. Dieses Feld wurde fälschlicherweise als CoroutineDispatcher eingegeben. Sie sollten es nicht mehr benötigen, da Sie im Textkörper der suspendierenden Funktion selbst zum gewünschten „CoroutineContext“ wechseln können.
  • RxWorker.createWork() und RxWorker.getBackgroundScheduler() sind jetzt mit @NonNull-Rückgabetypen annotiert.

Version 2.0.1

Version 2.0.1

9. April 2019

WorkManager 2.0.1 wurde veröffentlicht. Dieser Release ist identisch mit 2.0.1-rc01.

Version 2.0.1-rc01

3. April 2019

WorkManager 2.0.1-rc01 wurde veröffentlicht. Diese Version enthält einige Fehlerkorrekturen. Für Nutzer der Legacy-Version 1.x sind einige dieser Änderungen auch in 1.0.1-rc01 enthalten.

Fehlerkorrekturen

  • Robolectric-Tests funktionieren jetzt richtig mit WorkManager. b/122553577
  • Ein Grenzfall-Absturz wurde behoben, bei dem die Constraint-Verfolgung in APIs vor JobScheduler nicht bereinigt wurde. b/129226383
  • Ein StackOverflowError-Fehler bei langen Arbeitsketten wurde behoben. b/129091233
  • Die Dokumentation für PeriodicWorkRequest wurde aktualisiert, um darauf hinzuweisen, dass flexible Arbeitszeiten in API 23 nicht unterstützt werden.
  • Einige fehlerhafte Links in der Kotlin-Dokumentation wurden behoben.

Version 2.0.0

Version 2.0.0

20. März 2019

WorkManager 2.0.0 wurde veröffentlicht. Diese Version ist identisch mit 2.0.0-rc01 und ist die AndroidX-Version von 1.0.0 (stabil) mit AndroidX-Abhängigkeiten. Wir empfehlen, diese Version anstelle der Legacy-Versionen 1.x zu verwenden. Alle aktiven Entwicklungen zielen auf Version 2.x ab. Version 1.x erhält nur noch für begrenzte Zeit kritische Fehlerkorrekturen.

Version 2.0.0-rc01

7. März 2019

WorkManager 2.0.0-rc01 wurde veröffentlicht. Diese Version ist identisch mit Version 1.0.0 (stabil), hat aber AndroidX-Abhängigkeiten. Sobald diese Version 2.0.0 erreicht hat, sollten Sie sie einbinden. Die Legacy-Versionen 1.x erhalten dann nur noch einige kritische Fehlerkorrekturen. Alle aktiven Entwicklungen zielen auf Version 2.x ab.

Abhängigkeiten vor AndroidX

Informationen zur Verwendung von Kotlin-Erweiterungen finden Sie in der KTX-Dokumentation.
Referenzdokumente: Java

Groovy

dependencies {
    def work_version = "1.0.1"

    // (Java only)
    implementation "android.arch.work:work-runtime:$work_version"

    // Kotlin + coroutines
    implementation "android.arch.work:work-runtime-ktx:$work_version"

    // optional - RxJava2 support
    implementation "android.arch.work:work-rxjava2:$work_version"
    // optional - Test helpers
    androidTestImplementation "android.arch.work:work-testing:$work_version"
}

Kotlin

dependencies {
    val work_version = "1.0.1"

    // (Java only)
    implementation("android.arch.work:work-runtime:$work_version")

    // Kotlin + coroutines
    implementation("android.arch.work:work-runtime-ktx:$work_version")

    // optional - RxJava2 support
    implementation("android.arch.work:work-rxjava2:$work_version")

    // optional - Test helpers
    androidTestImplementation("android.arch.work:work-testing:$work_version")
}

Version 1.0.1

Version 1.0.1

9. April 2019

WorkManager 1.0.1 wurde veröffentlicht. Dieser Release ist identisch mit 1.0.1-rc01.

Wir empfehlen dringend, auf WorkManager 2.x zu aktualisieren, da es in Zukunft nur noch sehr wenige Updates für den 1.x-Zweig geben wird. Für die 1.x-Bibliothek werden auch keine neuen APIs veröffentlicht.

Version 1.0.1-rc01

2. April 2019

WorkManager 1.0.1-rc01 wurde veröffentlicht. Diese Version enthält einige Fehlerkorrekturen.

Fehlerkorrekturen

  • Robolectric-Tests funktionieren jetzt richtig mit WorkManager. b/122553577
  • Ein Grenzfall-Absturz wurde behoben, bei dem die Constraint-Verfolgung in APIs vor JobScheduler nicht bereinigt wurde. b/129226383
  • Ein StackOverflowError wurde behoben, das sich auf lange Arbeitsketten bezog. b/129091233

Version 1.0.0

Version 1.0.0

5. März 2019

Dies ist die stabile Version 1.0.0 von WorkManager. Diese Version von WorkManager ist identisch mit Version 1.0.0-rc02.

Version 1.0.0-rc02

21. Februar 2019

Dies ist der zweite Releasekandidat für die stabile Version 1.0.0 von WorkManager. Diese Version enthält zwei Fehlerbehebungen.

Fehlerkorrekturen

  • Workers werden jetzt nach einem Anwendungsabsturz korrekt geplant. b/124546316

  • Workers, die eine ungeprüfte Exception auslösen, werden jetzt korrekt als FAILED gekennzeichnet und führen nicht mehr zum Absturz des App-Prozesses.

Version 1.0.0-rc01

14. Februar 2019

Dies ist ein Releasekandidat für die stabile Version 1.0.0 von WorkManager. Diese Version enthält eine Fehlerkorrektur.

Fehlerkorrekturen

  • Die AlarmManager-basierte Implementierung berücksichtigt jetzt korrekt flex-Zeiträume für PeriodicWorkRequests. b/124274584

Version 1.0.0-beta05

6. Februar 2019

Diese Version enthält einige Fehlerbehebungen.

Fehlerkorrekturen

  • Ein Fall wurde behoben, in dem JobScheduler.getPendingJob(...) in API 23 verwendet wurde. b/123893059
  • Ein NullPointerException auf Geräten mit Android 5.1 (API‑Level 22) oder niedriger wurde behoben. b/123835104

Version 1.0.0-beta04

4. Februar 2019

Diese Version enthält einige Fehlerbehebungen.

Fehlerkorrekturen

  • Die Planung von PeriodicWork für die AlarmManager-basierte Implementierung wurde verbessert.
  • Ein Fall wurde behoben, in dem WorkManager Einschränkungen bei Verwendung der AlarmManager-basierten Implementierung nicht richtig verfolgt hat. b/123379508
  • Ein Fall wurde behoben, in dem WorkManager bei Verwendung der AlarmManager-basierten Implementierung den Versuch, die Arbeit nach dem Beenden des Prozesses noch einmal auszuführen, nicht wiederholte. b/123329850
  • Ein Fall wurde behoben, der dazu führte, dass WorkManager bei Verwendung der AlarmManager-basierten Implementierung Wakelocks verlor.

Version 1.0.0-beta03

25. Januar 2019

Diese Version enthält einige Fehlerbehebungen.

Fehlerkorrekturen

  • Wir haben eine Regression 1.0.0-beta02 eingeführt, die dazu führte, dass Aufgaben in einigen Situationen nicht richtig ausgeführt wurden. b/123211993
  • Ein Fall wurde behoben, in dem die Backoff-Zeit nicht richtig eingehalten wurde. b/122881597
  • Ein ConcurrentModificationException auf Geräten mit Android 5.1 (API) oder niedriger wurde behoben. Dies ist eine Fortsetzung der Korrektur in 1.0.0-beta02. b/121345393
  • exported=false für einige Komponenten in unserem Manifest hinzugefügt, bei denen diese Anmerkung fehlte.
  • Informationen zur Interaktion von WorkManager mit dem Betriebssystem sind in der Dokumentation auf Paketebene enthalten.

Version 1.0.0-beta02

15. Januar 2019

Diese Version enthält einige Fehlerbehebungen.

Fehlerkorrekturen

  • Ein Grenzfall wurde behoben, bei dem periodische Aufgaben auf Geräten mit Android 6.0 (API-Level 23) mehr als einmal pro Intervall ausgeführt werden konnten. b/121998363
  • Ein ConcurrentModificationException auf Geräten mit Android 5.1 (API‑Level 22) oder niedriger wurde behoben. b/121345393
  • Es wurde ein Fehler behoben, durch den Work falsch ausgeführt wurde, wenn die Constraints auf Geräten mit Android 5.1 (API‑Level 22) oder niedriger nicht erfüllt waren. b/122578012
  • Die Verarbeitung von Aufgaben wurde optimiert, um in einigen Grenzfall-Szenarien schneller zu sein. b/122358129
  • Es wurde eine Änderung hinzugefügt, um potenzielle Race-Bedingungen zwischen mehreren Instanzen von LiveData zu beheben, die von WorkManager verwendet werden.
  • Es wird jetzt die Room-Abhängigkeit 1.1.1 anstelle von 1.1.1-rc01 verwendet. Diese Versionen sind identisch. b/122578011

Version 1.0.0-beta01

19. Dezember 2018

Diese Version enthält keine API-Änderungen. WorkManager wird voraussichtlich bis zur nächsten Version API-stabil bleiben, sofern kein kritisches Problem auftritt. Diese Version enthält einige Fehlerbehebungen.

Fehlerkorrekturen

  • Untergeordnete Elemente von erfolgreich abgeschlossenen übergeordneten Arbeiten, die zuvor abgebrochen wurden, werden nicht mehr ausgeführt. b/120811767
  • Richtig initialisierte Protokollierungsklassen (hauptsächlich bei Tests).

Version 1.0.0-alpha13

12. Dezember 2018

Dieser Release enthält eine geringfügige API-Änderung, die für einige Kotlin-Nutzer hilfreich sein wird.

API-Änderungen

  • androidx.work.Result wurde als innere Klasse von ListenableWorker verschoben. So werden Refactoring-Konflikte mit der Result-Klasse auf oberster Ebene von Kotlin vermieden. Dies ist eine API-Änderung, die zu Inkompatibilitäten führen kann. b/120564418

Breaking API Changes

  • androidx.work.Result wurde als innere Klasse von ListenableWorker verschoben.

Version 1.0.0-alpha12

5. Dezember 2018

Dieses Release enthält einige funktionsgefährdende API-Änderungen. Weitere Informationen finden Sie unten im Abschnitt Funktionsgefährdende API-Änderungen. Diese Version wird wahrscheinlich als unsere erste Betaversion veröffentlicht. alpha12 enthält auch umfangreiche Dokumentationsaktualisierungen.

API-Änderungen

  • Mit dem neuen Artefakt work-rxjava2 wird RxWorker eingeführt. Dies ist ein ListenableWorker, der ein Single<Payload> erwartet.
  • Die Unterstützung für Firebase JobDispatcher wurde aufgrund der bevorstehenden Einstellung entfernt. Das bedeutet, dass das work-firebase-Artefakt nicht mehr aktualisiert wird, wenn wir in die Betaphase eintreten. Wir werden prüfen, ob wir in Zukunft eine Alternative anbieten können.
  • Payload mit Result zusammengeführt. Result ist jetzt eine „sealed class“ mit drei konkreten Implementierungen, die Sie über Result.success() (oder Result.success(Data)), Result.failure() (oder Result.failure(Data)) und Result.retry() abrufen können. Ihre ListenableFutures führen jetzt zu Result anstelle von Payload. Worker haben keine Getter- und Setter-Methoden für die Ausgabe Data. Dies ist eine funktionsgefährdende Änderung.
  • Constraints.Builder.setTriggerContentMaxDelay(long, TimeUnit) und Constraints.Builder.setTriggerContentUpdateDelay(long, TimeUnit) sowie Varianten wurden hinzugefügt, um die Unterstützung von Inhalts-URIs mit langsamer Auslösung zu verbessern. b/119919774
  • Die Variante WorkRequest.Builder.setBackoffCriteria(BackoffPolicy, Duration) wurde hinzugefügt. Für diese Methode ist API 26 erforderlich.
  • Die Kotlin-Erweiterungsmethoden Operation.await() und ListenableFuture.await() wurden hinzugefügt.
  • Operation.getException() wurde in Operation.getThrowable() umbenannt. Dies ist eine funktionsgefährdende Änderung.
  • Die Klasse ContentUriTriggers und Methoden, die darauf verweisen, sind nicht mehr öffentlich verfügbar. Dies ist eine funktionsgefährdende Änderung.
  • Die restlichen Varargs-Methoden in WorkManager, WorkContinuation und OneTimeWorkRequest wurden entfernt, um die API zu optimieren. Um Build-Probleme zu beheben, können Sie Ihre vorhandenen Varargs mit Arrays.asList(...) umschließen. Wir behalten weiterhin Versionen jeder Methode mit einem einzelnen Argument bei. Dies ist eine funktionsgefährdende Änderung.
  • WorkContinuation.combine(OneTimeWorkRequest, *) Varianten entfernt. Die API war verwirrend. Die vorhandenen combine-Methoden sind verständlicher. Dies ist eine funktionsgefährdende Änderung.

Fehlerkorrekturen

  • Implementierungen vor Marshmallow sind jetzt zuverlässiger, wenn es darum geht, nach dem Beenden eines bereits ausgeführten Prozesses wiederherzustellen.
  • LiveData, das über observeForever beobachtet wird, wird über WorkManager erfasst. Dies ist ein Backport einer Korrektur für die Room-Bibliothek. b/74477406
  • Data.Builder.build() löst jetzt eine Ausnahme aus, wenn das serialisierte Objekt die maximale Größe überschreitet. Bisher trat dies nur in einem Hintergrundthread auf, in dem Sie es nicht richtig verarbeiten konnten.
  • Es wird zwischen beendeter und abgebrochener Arbeit unterschieden. getWorkInfoById() gibt während ListenableWorker.onStopped() ein WorkInfo mit dem CANCELLED State zurück.
  • Behandeln Sie null Results als Fehler in ListenableWorker. b/120362353
  • Spekulativer Fix für Shield-Tablets mit API 24, die manchmal einen IllegalArgumentException-Fehler auslösten. b/119484416

Breaking API Changes

  • Die Unterstützung für Firebase JobDispatcher wurde aufgrund der bevorstehenden Einstellung entfernt. Das bedeutet, dass das work-firebase-Artefakt nicht mehr aktualisiert wird, wenn wir in die Betaphase eintreten. Wir werden prüfen, ob wir in Zukunft eine Alternative anbieten können.
  • Payload wurde mit Result zusammengeführt. Result ist jetzt eine „sealed class“ mit drei konkreten Implementierungen, die Sie über Result.success() (oder Result.success(Data)), Result.failure() (oder Result.failure(Data)) und Result.retry() abrufen können. Ihre ListenableFutures führen jetzt zu Result anstelle von Payload. Worker haben keine Getter- und Setter-Methoden für die Ausgabe Data.
  • Die Kotlin-Erweiterungsmethoden Operation.await() und ListenableFuture.await() wurden hinzugefügt.
  • Operation.getException() wurde in Operation.getThrowable() umbenannt.
  • Die Klasse ContentUriTriggers und Methoden, die darauf verweisen, sind nicht mehr öffentlich verfügbar.
  • Die restlichen Varargs-Methoden in WorkManager, WorkContinuation und OneTimeWorkRequest wurden entfernt, um die API zu optimieren. Um Build-Probleme zu beheben, können Sie Ihre vorhandenen Varargs mit Arrays.asList(...) umschließen. Wir behalten weiterhin Versionen jeder Methode mit einem einzelnen Argument bei.
  • WorkContinuation.combine(OneTimeWorkRequest, *) Varianten wurden entfernt. Die API war verwirrend. Die vorhandenen combine-Methoden sind verständlicher.

Version 1.0.0-alpha11

8. November 2018

Diese Version enthält viele Änderungen, die in beta zur stabilen API werden. Diese Version enthält wichtige API-Änderungen. Weitere Informationen finden Sie unten im Abschnitt Wichtige API-Änderungen.

API-Änderungen

  • work-runtime-ktx führt eine neue CoroutineWorker ein.
  • „WorkStatus“ wurde in „WorkInfo“ umbenannt. Alle entsprechenden getStatus-Methodenvarianten wurden in die entsprechenden getWorkInfo-Varianten umbenannt. Dies ist eine funktionsgefährdende Änderung.
  • ListenableWorker.onStopped() akzeptiert jetzt ein boolesches Argument, das angibt, ob die WorkRequest gekündigt wurde. Bei WorkManager wird diese Unterscheidung nicht mehr getroffen. Dies ist eine funktionsgefährdende Änderung.
  • Das Paket androidx.work.test wurde in das Paket androidx.work.testing umbenannt. Dies ist eine funktionsgefährdende Änderung.
  • Setter für Constraints sind nicht mehr Teil der öffentlichen API. Dies ist eine funktionsgefährdende Änderung.
  • WorkerParameters.getTriggeredContentUris() und WorkerParameters.getTriggeredContentAuthorities() haben zuvor Arrays zurückgegeben. Diese Methoden geben jetzt Sammlungen zurück. Dies ist eine funktionsgefährdende Änderung.
  • ListenableWorker.onStartWork() wird in ListenableWorker.startWork() umbenannt. Dies ist eine funktionsgefährdende Änderung.
  • Der Konstruktor für WorkStatus ist nicht mehr Teil der öffentlichen API. Dies ist eine funktionsgefährdende Änderung.
  • Configuration.getMaxJobSchedulerID() und Configuration.getMinJobSchedulerID() werden in Configuration.getMinJobSchedulerId() bzw. Configuration.getMaxJobSchedulerId() umbenannt. Dies ist eine funktionsgefährdende Änderung.
  • Der öffentlichen API wurden viele @NonNull-Annotationen hinzugefügt, um die Ergonomie der API zu verbessern.
  • Fügen Sie die WorkManager.enqueueUniqueWork() API hinzu, um eindeutige OneTimeWorkRequests in die Warteschlange zu stellen, ohne eine WorkContinuation erstellen zu müssen.
  • Alle Varianten der Methoden enqueue und cancel für WorkManager geben jetzt einen neuen Operation-Typ zurück. Dies ist eine funktionsgefährdende Änderung.
  • Alle Varianten von enqueue akzeptieren keine Varargs mehr für WorkRequests. Dies ist eine funktionsgefährdende Änderung. Verwenden Sie stattdessen Sammlungen. Mit Arrays.asList() können Sie vorhandenen Code ändern. Wir haben das getan, um die API-Oberfläche und die Anzahl der Methoden zu reduzieren.
  • Wenn Sie versuchen, initialize WorkManager mehr als einmal pro Prozess auszuführen, wird jetzt ein IllegalStateException zurückgegeben. Dies ist eine funktionsgefährdende Änderung.

Fehlerkorrekturen

  • WorkRequest.Builder im work-runtime-ktx-Artefakt verwenden jetzt ListenableWorker. Behebt b/117666259
  • Die nächste Ausführungszeit für PeriodicWork muss in der Zukunft liegen. Fehlerkorrekturen b/118204399
  • Entfernen Sie potenzielle Laufwerks-E/A bei der Verwendung von WorkManager beim Start der App. Behebt b/117796731
  • Eine Race-Bedingung in WorkConstraintsTracker wurde behoben. Behebt android-workmanager/issues/56

Breaking API Changes

  • „WorkStatus“ wurde in „WorkInfo“ umbenannt. Alle entsprechenden getStatus-Methodenvarianten wurden in die entsprechenden getWorkInfo-Varianten umbenannt.
  • ListenableWorker.onStopped() akzeptiert jetzt ein boolesches Argument, das angibt, ob die WorkRequest gekündigt wurde. Bei WorkManager wird diese Unterscheidung nicht mehr getroffen.
  • Das Paket androidx.work.test wurde in androidx.work.testing umbenannt.
  • Setter für Constraints sind nicht mehr Teil der öffentlichen API.
  • WorkerParameters.getTriggeredContentUris() und WorkerParameters.getTriggeredContentAuthorities() haben zuvor Arrays zurückgegeben. Diese Methoden geben jetzt Sammlungen zurück.
  • ListenableWorker.onStartWork() wird in ListenableWorker.startWork() umbenannt.
  • Der Konstruktor für WorkStatus ist nicht mehr Teil der öffentlichen API.
  • Configuration.getMaxJobSchedulerID() und Configuration.getMinJobSchedulerID() werden in Configuration.getMinJobSchedulerId() bzw. Configuration.getMaxJobSchedulerId() umbenannt.
  • Alle Varianten der Methoden enqueue und cancel für WorkManager geben jetzt einen neuen Operation-Typ zurück.
  • Alle Varianten von enqueue akzeptieren keine Varargs mehr für WorkRequests.
  • Wenn Sie versuchen, initialize WorkManager mehr als einmal pro Prozess auszuführen, wird jetzt ein IllegalStateException zurückgegeben.

Version 1.0.0-alpha10

11. Oktober 2018

Dieser Release unterstützt die entwicklergesteuerte asynchrone Verarbeitung. Diese Version enthält wichtige API-Änderungen. Weitere Informationen finden Sie unten im Abschnitt Wichtige API-Änderungen.

WorkManager befindet sich voraussichtlich in der Endphase der Alphaperiode. Wir gehen davon aus, dass die API in der Betaphase stabil sein wird. Bitte nehmen Sie sich die Zeit, uns Feedback über unseren Issue Tracker zu geben.

API-Änderungen

  • Alle zuvor verwendeten deprecated-Methoden und -Klassen wurden entfernt, insbesondere der Standardkonstruktor Worker. Dies ist eine funktionsgefährdende API-Änderung.
  • Die Klasse NonBlockingWorker wurde in ListenableWorker umbenannt. Sie ist jetzt eine nicht ausgeblendete öffentliche Klasse und kann verwendet werden.
    • ListenableWorker bietet Zugriff auf eine abstrakte Methode, ListenableFuture<Payload> onStartWork(), die im Hauptthread aufgerufen wird. Es liegt an Ihnen, die Arbeit asynchron zu starten und zu verarbeiten. Wenn Sie fertig sind, sollten Sie ListenableFuture entsprechend aktualisieren. Referenzimplementierungen von ListenableFutures sind im Paket Futures in alpha02 verfügbar (siehe unten im Abschnitt WorkManager).
    • Worker erweitert ListenableWorker und funktioniert weiterhin wie zuvor mit einer abstrakten Result doWork()-Methode.
    • Einige Methoden und Elemente wurden von Worker nach ListenableWorker verschoben.
    • Wir werden demnächst Referenzimplementierungen für ListenableWorkers bereitstellen, die Kotlin-Coroutinen (sobald die stabilen Versionen veröffentlicht werden) und RxJava2 verwenden.
  • Die Schnittstelle WorkerFactory und die konkrete Implementierung DefaultWorkerFactory wurden in einer abstrakten Klasse namens WorkerFactory zusammengeführt. Die Implementierung sorgt dafür, dass das standardmäßige auf Reflexion basierende Verhalten als letzter Ausweg für alle von Nutzern erstellten WorkerFactory-Instanzen aufgerufen wird. Dies ist eine funktionsgefährdende Änderung.
  • WorkManager.synchronous() und WorkContinuation.synchronous() sowie alle zugehörigen Methoden wurden entfernt. ListenableFuture<Void> wurde als Rückgabetyp vieler Methoden in der API hinzugefügt. Dies ist eine funktionsgefährdende API-Änderung.
    • Sie können jetzt synchron Daten abrufen und beobachten, indem Sie ListenableFuture verwenden. WorkManager.enqueue() hat beispielsweise früher void zurückgegeben, jetzt wird ein ListenableFuture<Void> zurückgegeben. Sie können ListenableFuture.addListener(Runnable, Executor) oder ListenableFuture.get() aufrufen, um Code auszuführen, sobald der Vorgang abgeschlossen ist.
    • Diese ListenableFutures geben nicht an, ob der Vorgang erfolgreich war oder fehlgeschlagen ist, sondern nur, dass er abgeschlossen wurde. Sie müssen weiterhin WorkManager-Methoden verketten, um diese Informationen zu erhalten.
    • Wir ignorieren cancel()-Aufrufe für diese Objekte, da sie verwirrend sind und schwer nachzuvollziehen ist, ob Sie den Vorgang oder die resultierende Arbeit abbrechen möchten. Dies fällt in den Vertrag von Future.
    • Um die Parität mit den synchronen getStatus*-Methoden aufrechtzuerhalten, haben wir ListenableFuture-Varianten bereitgestellt und die vorhandenen Methoden, die LiveData zurückgegeben haben, umbenannt, sodass „LiveData“ explizit im Namen enthalten ist (z. B. getStatusesByIdLiveData(UUID)). Dies ist eine API-Änderung, die zu Inkompatibilitäten führen kann.

Fehlerkorrekturen

  • Das bekannte Problem aus Alpha09 mit doppelten androidx-annotations.pro-Dateien wurde behoben. Sie können den Workaround aus den vorherigen Versionshinweisen entfernen, indem Sie exclude 'META-INF/proguard/androidx-annotations.pro' aus Ihrer Gradle-Datei löschen.
  • Proguard-Konfigurationen hinzugefügt, um den neuen Worker-Konstruktor beizubehalten. b/116296569
  • Mögliche NullPointerException in einer Race-Bedingung behoben, in der die Arbeit REPLACE wurde. b/116253486 und b/116677275
  • WorkContinuation.combine() akzeptiert jetzt ein oder mehrere WorkContinuations anstelle von mindestens zwei. b/117266752

Breaking API Changes

  • Alle zuvor verwendeten deprecated-Methoden und -Klassen wurden entfernt, insbesondere der Standardkonstruktor Worker.
  • Die Schnittstelle WorkerFactory und die konkrete Implementierung DefaultWorkerFactory wurden in einer abstrakten Klasse namens WorkerFactory zusammengeführt.
  • WorkManager.synchronous() und WorkContinuation.synchronous() wurden entfernt.
  • WorkManager.getStatus*()-Methoden geben jetzt ListenableFutures zurück. WorkManager.getStatus*LiveData() gibt LiveData zurück.

Version 1.0.0-alpha09

19. September 2018

Bekanntes Problem

Wenn das folgende Problem auftritt: „More than one file was found with OS independent path 'META-INF/proguard/androidx-annotations.pro'“ (Es wurde mehr als eine Datei mit dem betriebssystemunabhängigen Pfad „META-INF/proguard/androidx-annotations.pro“ gefunden), fügen Sie die folgende Zeile in Ihre Gradle-Datei ein. Dies ist eine vorübergehende Problemumgehung, bis wir das Problem in Alpha 10 beheben:

Groovy

android {
    packagingOptions {
        exclude 'META-INF/proguard/androidx-annotations.pro'
    }
}

Kotlin

android {
    packagingOptions {
        exclude("META-INF/proguard/androidx-annotations.pro")
    }
}

Fehlerkorrekturen

  • Eine weitere Korrektur für den Fehler „100 Jobs“ wurde hinzugefügt. b/115560696
  • Es wurden einige Korrekturen für Fehler bei Fremdschlüsseleinschränkungen aufgrund von Race-Bedingungen hinzugefügt. b/114705286
  • Delegierte ConstraintTrackingWorker.onStopped(boolean)-Aufrufe an die zugrunde liegende Worker. b/114125093
  • Die richtige Mindestverzögerung für Firebase JobDispatcher wird erzwungen. b/113304626
  • Verbessertes Threading garantiert intern in der Bibliothek.
  • Behebe ein potenzielles Problem mit der Deduplizierung von LiveData intern.

API-Änderungen

  • Sie können jetzt eigene Worker-Instanzen zur Laufzeit erstellen, indem Sie ein WorkerFactory als Teil des WorkManager.Configuration angeben. Die Fallback-Factory ist DefaultWorkerFactory, was dem Verhalten früherer Versionen von WorkManager entspricht.
    • Die Standardkonstruktoren für Worker und NonBlockingWorker sind jetzt als veraltet markiert. Verwenden Sie den neuen Konstruktor (Worker(Context, WorkerParameters)) und rufen Sie super(Context, WorkerParameters) auf. In zukünftigen Versionen von WorkManager wird der Standardkonstruktor entfernt.
  • Wir verwenden das neue ListenableFuture-Artefakt intern (ohne Guava-Abhängigkeiten). Wir werden ListenableFutures in zukünftigen Releases in die API einführen. Diese Änderung wird dazu beitragen, dass NonBlockingWorker wieder sichtbar gemacht werden kann.
  • Es ist jetzt möglich, zeitgesteuerte Aufgaben in TestDriver über TestDriver.setInitialDelayMet(UUID) und TestDriver.setPeriodDelayMet(UUID) auszulösen. b/113360060

Aktuelle Änderungen

  • Die Standardkonstruktoren Worker und NonBlockingWorker sind veraltet. Migrieren Sie so schnell wie möglich zum neuen Konstruktor. In zukünftigen Versionen wird der Standardkonstruktor entfernt.

Version 1.0.0-alpha08

27. August 2018

Fehlerkorrekturen

  • WorkManager-Komponenten wurden explizit als „Direct Boot Unaware“ gekennzeichnet, damit sie nicht während des Direct Boot-Vorgangs gestartet werden. Künftig werden wir eine Version von WorkManager bereitstellen, die Direct Boot unterstützt. b/112665532
  • Ein Problem wurde behoben, bei dem wiederholte Aufgaben nicht ausgeführt wurden. b/112604021
  • Ein Problem wurde behoben, bei dem periodische Aufgaben nicht wiederholt ausgeführt wurden (bezogen auf das oben genannte Problem). b/112859683
  • Backoff-Richtlinien werden berücksichtigt, wenn der App-Prozess bereits ausgeführt wird.
  • Die Ausnahmenachrichten in Data wurden korrigiert, um darauf hinzuweisen, dass das Limit 10 KB beträgt.
  • Der Höchstwert von Configuration.setMaxSchedulerLimit(int) wurde auf 50 gesenkt, um eine gewisse Latenz bei der Verarbeitung von JobScheduler zu berücksichtigen. b/112817355

Version 1.0.0-alpha07

16. August 2018

Fehlerkorrekturen

  • Es wurde ein potenzielles Problem mit SQL-Abfragen mit negativen Grenzwerten behoben, das dazu führen konnte, dass eine unbegrenzte Anzahl von Ergebnissen zurückgegeben wurde.
  • Wenn die Ausführung einer Aufgabe abgeschlossen ist, werden jetzt alle ausstehenden Kopien dieser Aufgabe in anderen Schedulern korrekt abgebrochen. Dadurch wurde das Limit von JobScheduler Jobs überschritten. b/111569265
  • Es wurde ein ConcurrentModificationException in ConstraintTracker behoben. b/112272753
  • Die Rückgabetyp-Annotationen von Data.getBooleanArray(String) und Data.getIntArray(String) wurden in @Nullable anstelle von @NonNull geändert. b/112275229

API-Änderungen

  • Worker erweitert jetzt eine neue Klasse, NonBlockingWorker. Das hat keine Auswirkungen auf die aktuelle Nutzung. In Zukunft wird NonBlockingWorker eine vollständig unterstützte Einheit für benutzerdefinierte Threading-Lösungen sein.
  • Die Rückgabetyp-Annotationen von Data.getBooleanArray(String) und Data.getIntArray(String) wurden von @NonNull in @Nullable geändert. b/112275229
  • Kotlin-Erweiterungen: Map.toWorkData() wurde eingestellt und eine workDataOf(vararg Pair<String, Any?>) auf oberster Ebene hinzugefügt, um die Konsistenz mit vorhandenen APIs zu erhöhen.

Version 1.0.0-alpha06

1. August 2018

Fehlerkorrekturen

  • Datenbanksperren beim Planen von Aufgaben verhindern. b/111801342
  • Ein Fehler wurde behoben, der dazu führte, dass PeriodicWork im Stromsparmodus nicht planmäßig ausgeführt wurde. b/111469837
  • Ein Race-Bedingung beim Tracking von Einschränkungen wurde behoben, die zum Absturz von WorkManager geführt hat. googlecodelabs/android-workmanager/issues/56
  • Erstellen Sie eindeutige WorkRequests, wenn Sie WorkRequest.Builder#build() verwenden. b/111408337
  • Aktivieren Sie die Verwendung von RescheduleReceiver nur, wenn WorkRequests dies erfordern. b/111765853

Version 1.0.0-alpha05

24. Juli 2018

API-Änderungen

  • WorkManager.getInstance() ist jetzt mit @NonNull anstelle von @Nullable gekennzeichnet. Wenn das Singleton bei der manuellen Initialisierung nicht richtig initialisiert wird, löst die Methode stattdessen eine IllegalStateException aus. Dies ist eine API-Änderung, die zu Inkompatibilitäten führen kann.
  • Es wurde eine neue API, Configuration.Builder.setMinimumLoggingLevel(int), hinzugefügt, mit der die Ausführlichkeit von WorkManager gesteuert werden kann. Standardmäßig protokolliert WorkManager Log.INFO und höher.
  • Die Signatur von Data.getString() wurde geändert, sodass kein Standardwert mehr verwendet wird (implizit null). Dies ist eine API-Änderung, die zu Inkompatibilitäten führen kann.
  • Einige Methoden, die nur für die interne Verwendung erforderlich sind, wurden als @hide gekennzeichnet. Dazu gehören der Constraints-Konstruktor, Data.toByteArray() und Data.fromByteArray(byte[]). Dies ist eine funktionsgefährdende API-Änderung.

Fehlerkorrekturen

  • WorkManager führt keine Aufgaben mehr während bekannter Fälle der automatischen Sicherung aus. Dies könnte zu einem Absturz geführt haben. b/110564377
  • Das Problem, dass PeriodicWorkRequests bei Verwendung von JobScheduler doppelt geplant wurden, wurde behoben. b/110798652
  • Es wurde ein Problem behoben, bei dem PeriodicWorkRequests nach dem Inaktivitätsmodus des Geräts nicht richtig ausgeführt wurden. b/111469837
  • Ein Problem mit anfänglichen Verzögerungen bei der Verwendung von Firebase JobDispatcher wurde behoben. b/111141023
  • Einige potenzielle Race Conditions und Timing-Probleme wurden behoben.
  • Nicht mehr benötigte BroadcastReceiver wurden korrekt freigegeben.
  • Die Leistung beim erneuten Planen wurde optimiert, wenn Apps nach dem erzwungenen Schließen neu gestartet werden.
  • TestScheduler.setAllConstraintsMet(UUID) darf vor oder nach dem Einreihen des angegebenen WorkRequest aufgerufen werden. b/111238024

Aktuelle Änderungen

  • WorkManager.getInstance() wird jetzt mit @NonNull anstelle von @Nullable annotiert.
  • Die Signatur von Data.getString() wurde geändert, sodass sie keinen Standardwert mehr akzeptiert (implizit null).
  • Einige Methoden, die nur für die interne Verwendung erforderlich sind, wurden als @hide gekennzeichnet. Dazu gehören der Constraints-Konstruktor, Data.toByteArray() und Data.fromByteArray(byte[]).

Version 1.0.0-alpha04

26. Juni 2018

Fehlerkorrekturen

  • PeriodicWorkRequest werden jetzt korrekt neu geplant, wenn die AlarmManager-basierte Implementierung verwendet wird.
  • Ein potenzieller ANR-Fehler wurde behoben, der auftreten konnte, wenn alle Worker nach einem erzwungenen Stopp oder einem Neustart neu geplant wurden. b/110507716
  • Für verschiedene WorkManager-APIs wurden Anmerkungen zur Null-Zulässigkeit hinzugefügt. b/110344065
  • Nicht abgefangene Ausnahmen protokollieren, die während der Worker-Ausführung auftreten. b/109900862
  • Destruktive Datenbankmigrationen sind zulässig, wenn Sie zu einer älteren Version von WorkManager zurückkehren möchten. b/74633270
  • Ein Migrationsabsturz wurde behoben, der auftrat, wenn doppelte implizite Tags erstellt wurden. Dieses Problem ist sehr selten und trat nur auf, wenn Sie selbst dasselbe implizite Tag-Format verwendet haben.

Version 1.0.0-alpha03

19. Juni 2018

Fehlerkorrekturen

  • Eine Race-Bedingung in der AlarmManager-basierten Implementierung wurde behoben. b/80346526.

  • Doppelte Jobs bei Verwendung von JobScheduler nach einem Geräteneustart wurden behoben.

  • Jobs mit Inhalts-URI-Triggern bleiben jetzt auch nach einem Neustart erhalten. b/80234744

  • Dokumentationsupdates. b/109827628, b/109758949, b/80230748

  • Ein Absturz beim erneuten Einreihen eines WorkRequest wurde behoben. b/109572353.

  • Es wurden Kotlin-Compilerwarnungen bei Verwendung der work-runtime-ktx-Abhängigkeit behoben.

  • WorkManager verwendet jetzt die Room-Version 1.1.1-rc1.

API-Änderungen

  • getStatusesSync() wurde hinzugefügt, die synchrone Version von WorkContinuation.getStatuses().
  • Worker kann zwischen einer vom Nutzer initiierten Kündigung und einem vom Betriebssystem angeforderten temporären Stopp unterscheiden. Worker.isStopped() gibt true zurück, wenn eine Art von Stopp angefordert wurde. Worker.isCancelled() gibt true zurück, wenn die Aufgabe explizit abgebrochen wurde. b/79632247
  • Unterstützung für JobParameters#getNetwork() auf API 28 hinzufügen. Dies wird über Worker.getNetwork() bereitgestellt.
  • Configuration.Builder.setMaxSchedulerLimit(int maxSchedulerLimit) wurde hinzugefügt, damit Sie erzwingen können, wie viele Jobs an JobScheduler oder AlarmManager gesendet werden können. So wird verhindert, dass WorkManager alle verfügbaren JobScheduler-Slots belegt.
  • Es wurde Configuration.setJobSchedulerJobIdRange(int minJobSchedulerId, int maxJobSchedulerId) hinzugefügt, mit dem ein Bereich von JobScheduler-Job-IDs definiert werden kann, die für die Verwendung durch WorkManager sicher sind. b/79996760
  • Worker.getRunAttemptCount() gibt die aktuelle Anzahl der Ausführungen für eine bestimmte Worker zurück. b/79716516
  • Mit WorkManager.enqueueUniquePeriodicWork(String uniqueWorkName, ExistingPeriodicWorkPolicy existingPeriodicWorkPolicy, PeriodicWorkRequest periodicWork) können Sie eindeutige PeriodicWorkRequests in die Warteschlange stellen. b/79600647
  • Mit WorkManager.cancelAllWork() werden alle Worker gekündigt. Bibliotheken, die von WorkManager abhängen, können mit WorkManager.getLastCancelAllTimeMillis() abfragen, wann diese Methode zuletzt aufgerufen wurde, um den internen Status zusätzlich zu bereinigen.
  • WorkManager.pruneWork() wurde hinzugefügt, um abgeschlossene Jobs aus der internen Datenbank zu entfernen. b/79950952, b/109710758

Geändertes Verhalten

  • Für alle WorkRequests wurde ein implizites Tag hinzugefügt, das der vollqualifizierte Klassenname für das Worker ist. So können WorkRequests ohne tags oder wenn die id nicht verfügbar ist, entfernt werden. b/109572351

Aktuelle Änderungen

  • Worker.WorkerResult wurde in Worker.Result umbenannt.
  • Worker.onStopped hat jetzt einen zusätzlichen isCancelled-Parameter, der auftrue festgelegt ist, wenn Worker explizit gekündigt wurde.

Version 1.0.0-alpha02

24. Mai 2018

Fehlerkorrekturen

  • Es wurde ein NullPointerException am State.isFinished() behoben. b/79550068
  • Ein Problem wurde behoben, das dazu geführt hat, dass Worker auf Application.onCreate() verschoben wurden. b/79660657
  • Ein Problem wurde behoben, bei dem mehr Arbeit geplant werden konnte, als vom Betriebssystem zulässig ist. b/79497378
  • Die Bereinigung von Wake Locks, die mit Worker verknüpft sind, wurde in den Hintergrundthread verschoben.
  • Die AlarmManager-Implementierung wird jetzt korrekt bereinigt, wenn alle ausstehenden Arbeiten abgeschlossen sind.
  • Bereinigungs-SQL-Abfragen korrigiert, die sich auf nicht englischsprachige Gebiete auswirkten. b/80065360
  • Unterstützung für float in Data hinzugefügt. b/79443878
  • Data.Builder.putAll() gibt jetzt eine Instanz von Builder zurück. b/79699162
  • Mehr Javadoc und Korrekturen in der Dokumentation. b/79691663

API-Änderungen

  • Worker können auf das Anhalten reagieren. Mit Worker.isStopped() können Sie prüfen, ob eine Worker beendet wurde. Worker.onStopped() kann für einfache Bereinigungsvorgänge verwendet werden.
  • Die Worker.getTags() API gibt ein Set von Tags zurück, die mit dem Worker verknüpft sind.
  • javax.time.Duration-Überladungen für APIs hinzugefügt, die eine Kombination aus Dauer und TimeUnits verwenden. Dies wird durch @RequiresApi(26) geschützt.
  • WorkManager-Erweiterungen wurden vom Paket androidx.work.ktx in das Paket androidx.work verschoben. Die alten Erweiterungen sind veraltet und werden in einer zukünftigen Version entfernt.
  • Configuration.withExecutor() wurde verworfen. Verwenden Sie stattdessen Configuration.setExecutor().

Version 1.0.0-alpha01

8. Mai 2018

WorkManager vereinfacht die Planung und Ausführung von garantierten, einschränkungsbewussten Hintergrundprozessen. Diese erste Version ist 1.0.0-alpha01.