WorkManager
| 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.
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
minSdkwurde 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.WorkMetricsInfoRepositoryerfasstWorkMetricsInfopro Arbeitsereignis-Zeitstempel, Worker-Dauer, kumulative Gesamtlaufzeit und Aufschlüsselung der Ausführungsversuche. Messwerte können über konfigurierbare Abfragen abgerufen oder alsFlowabgeschlossener Arbeit beobachtet werden. Für diese APIs ist die Einwilligung in@ExperimentalWorkMetricsApierforderlich. - Mit neuen experimentellen Event-Listener-APIs können Sie die Ausführung und Planung von
WorkManagerdirekt beobachten.Configuration.Builderakzeptiert 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 denenwork-analyticsbasiert.
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
WorkConstraintsDaoTestund im Dateinamen behoben. (I0868d) - Die Sperrenkonflikte in
PackageManagerServicewährend des Starts vonWorkManagerwurden reduziert, indem die Standardaktivierungsstatus von Komponentenmanifesten inPackageManagerHelperabgefragt und im Cache gespeichert wurden. (Id84ba, b/528755807) - Ein Problem wurde behoben, bei dem das Aufrufen von
WorkManager.updateWorkwä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
RemoteListenableWorkerwurde 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 FlagConfiguration.isRemoteCancellationPropagationFixEnabledfü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
WorkMetricsQueryAPI wurde hinzugefügt, um Messwertinformationen zu filtern (I132b4, b/522338412). - Implementieren Sie
workerDurationMillisundtotalRuntimeMillisinWorkMetricsInfo, um die Ausführungsdauer des Workers und die kumulative Gesamtlaufzeit zu erfassen. (I57f65, b/507212208) retentionDuration(Dauer, API 26+) undretentionTime/retentionTimeUnit(API 23+) wurden als Konstruktoren fürWorkMetricsInfoRepositoryhinzugefügt, um das Entfernen alter Messwerte zu ermöglichen. Die Standardeinstellung ist 7 Tage. (Ifdf2e, b/522338412)- Flow-API für abgeschlossene
WorkMetricsInfohinzufügen (I11ec2, b/507212999) - Fehlende experimentelle Annotation für
work-analytics-Klassen hinzugefügt (I1a055, b/528112001) androidx.benchmarkhat jetzt einenminSdkvon 24. (Ic2a85)- Implementieren Sie
stopReasonCounts,explicitRetryCountundrunAttemptCountinWorkMetricsInfo. (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
WorkInfohinzufü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
Dataabgerufen 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.Defaultanstelle 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 vonWorkManager'swurde behoben. (I4cc18, b/506239869) - Prozessabstürze in
WorkManagerbeim Registrieren von Netzwerkbeschränkungs-Callbacks aufgrund fehlenderACCESS_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)
WorkManagerversucht jetzt, die Initialisierung für generischeSQLiteExceptionnoch 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_UNKNOWNzuordneten. (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
NetworkStateTrackerbehandeln. (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
NetworkStateTrackerbehandeln. (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
minSdkwurde von API 21 auf API 23 aktualisiert. - Die API
setRemoteSessionTimeoutMillisim Konfigurationsgenerator vonWorkManagerwurde hinzugefügt, um die Konfiguration der Zeitspanne zu ermöglichen, in der eineRemoteWorkManager-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
stopRunningWorkWithReasonzuWorkManagerTestDriverhinzu. (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
setRemoteSessionTimeoutMillisim 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.Buildereine 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
TestListenableWorkerBuilderzu übergeben als die, die zur Unterstützung benutzerdefinierterWorkerFactory-Implementierungen erstellt wird (If6bff, b/389154854)
Fehlerkorrekturen
- Netzwerkfunktionen in
SharedNetworkCallbackzwischenspeichern, 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
ConstraintsNotMeterreichten (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
RemoteCoroutineWorkerden 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
TooManyRequestsExceptiondurch die Registrierung vonWorkManagereinesNetworkCallbackfü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
WorkManagerwurden 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 vonWorkManagerherum hinzugefügt. Configuration.workerCoroutineContextwurde hinzugefügt, um den Dispatcher zu steuern, in demCoroutineWorkerausgeführt wird.- Entwickler können
NetworkRequestals Einschränkung für einen Worker über die MethodeConstraints.setRequiredNetworkRequestangeben. So können Sie genauer festlegen, in welchem Netzwerk dieser Worker ausgeführt werden soll. WorkManager2.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_TIMEOUThinzu, 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
WorkManagerwurden 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 vonWorkManagerherum 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
WorkManagernichtstopSelf()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 dieWorkergebunden wird, wenn eineWorkerFactoryverwendet wird. (Ibdc8a, Ie8a90, I7373f)
Fehlerkorrekturen
- Ein Absturz wurde behoben, der dadurch verursacht wurde, dass
WorkManagerversucht 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
@RestrictToTracerinWorkManagerauszugeben. (I17d7f, b/260214125) Configuration.workerCoroutineContextwurde hinzugefügt, um den Dispatcher zu steuern, in demCoroutineWorkerausgeführt wird. So lässt sich die Verwendung vonDispatchers.DefaultinWorkManagervollständig vermeiden. (Icd1b7)- Benutzerdefinierte Ausnahme-Handler für Workers hinzufügen (Ib1b74, b/261190695)
OneTimeWorkRequest.BuilderundPeriodicWorkRequest.Builderkönnen jetzt mitKClassanstelle vonClasserstellt werden:val request = OneTimeWorkRequest.Builder(Worker::class).setConstraints(...).build()(Ib55f6)- Die Klasse
WorkManagerwurde zu Kotlin migriert. Methoden, dieLiveData,ListenableFutureoderFlowzurü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
NetworkRequestals Einschränkung für einen Worker über die MethodeConstraints.setRequiredNetworkRequestangeben. So können Sie genauer festlegen, in welchem Netzwerk dieser Worker ausgeführt werden soll.
API-Änderungen
- Es wurde die Möglichkeit hinzugefügt,
NetworkRequestals 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
WorkManagerversucht 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 vonLiveDatakann der Fortschritt des Workers jetzt über den Flow überWorkManager.getWorkInfosFlowund ähnliche Methoden beobachtet werden. WorkManagerenthält jetzt einen Hinweis darauf, warum ein Worker zuvor beendet wurde. Sie kann über die MethodegetStopReason()von einem Worker selbst oder übergetStopReason()vonWorkInfoabgefragt 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.UPDATEsollte 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_EXECUTORSkann ininitializeTestWorkManagerverwendet werden, um inConfigurationfestgelegte Executors beizubehalten und den echten Hauptthread zu verwenden. - Coroutinen-APIs wie
CoroutineWorkerwurden vom zusätzlichen Artefakt „work-runtime-ktx“ zum Hauptartefakt „work-runtime“ verschoben. „work-runtime-ktx“ ist jetzt leer.
API-Änderungen
stopReasonwurde „WorkInfo“ hinzugefügt. Dadurch iststopReasonnach der Ausführung des Workers verfügbar. Das kann bei der BerichterstellungstopReasonhilfreich sein, da eine App nach dem Beenden eines Workers sehr schnell beendet werden kann. (I21386)Clockkann über die Konfiguration festgelegt und zur Steuerung der Ausführungsreihenfolge von Worker-Tests verwendet werden. (Ic586e)- Der
getStopReason()-Methode wurdeListenableWorkerhinzugefü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
WorkInfoist jetzt öffentlich, was beim Testen nützlich sein kann. (Ia00b6, b/209145335) work-runtime-ktxist jetzt leer.CoroutineWorkerund andere Kotlin-spezifische Dienstprogramme sind jetzt im Hauptartefakt für die Arbeitslaufzeit verfügbar. (I71a9a)- Die Methode
setNextScheduleTimeOverridewurde hinzugefügt, mit der sich periodische Arbeitszeitpläne genau festlegen lassen (I3b4da). getNextScheduleTimeMilliswurde hinzugefügt, um Informationen zur geplanten Laufzeit zu erhalten.WorkInfowurde hinzugefügt. (I797e4)WorkInfowerden 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 vonConstraintshinzugefügt. Sie sind jetzt an entsprechende Anmerkungen für Setter inConstraints.Builderangeglichen, die seit frühen Versionen vonWorkManagervorhanden waren. (I6d7d2) WorkManagerhat jetzt ein separates Limit für Content-URI-Worker, um ihnen garantierte Slots inJobSchedulerzu geben und so zu verhindern, dass bei hoher Last Content-Updates fehlen. Das Limit kann überConfiguration.Builder.setContentUriTriggerWorkersLimitkonfiguriert werden. (Ic128f)WorkInfowerden 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
- Konstanten für von
WorkInfo.stopReasonundListenableWorker.stopReasonzurückgegebene Gründe für das Beenden hinzugefügt (I0cc00)
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
WorkManagerenthält jetzt einen Hinweis darauf, warum ein Worker zuvor beendet wurde. Sie kann über die MethodegetStopReason()von einem Worker selbst oder übergetStopReason()vonWorkInfoabgefragt werden.
API-Änderungen
stopReasonwurde „WorkInfo“ hinzugefügt.stopReasonist verfügbar, nachdem der Worker ausgeführt wurde. Das kann bei der BerichterstellungstopReasonhilfreich 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
ListenableWorkerwurde die MethodegetStopReason()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,
overrideNextScheduleTimemitTestDriverzu 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 vonLiveDatakann der Fortschritt des Workers jetzt über den Flow mitWorkManager.getWorkInfosFlowund ä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.UPDATEsollte 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
WorkManagerentsprechen der Produktion. MitExecutorsMode.PRESERVE_EXECUTORSkönnen inConfigurationfestgelegte Executors beibehalten und der tatsächliche Hauptthread verwendet werden. - Coroutinen-APIs wie
CoroutineWorkerwurden vom zusätzlichen Artefaktwork-runtime-ktxin das Hauptartefaktwork-runtimeverschoben.work-runtime-ktxist jetzt leer.
API-Änderungen
- Der Konstruktor von
WorkInfoist jetzt öffentlich. Das kann beim Testen nützlich sein. (Ia00b6, b/209145335) work-runtime-ktxist jetzt leer.CoroutineWorkerund andere Kotlin-spezifische Dienstprogramme sind jetzt im Hauptartefaktwork-runtimeverfügbar. (I71a9a)- Die Methode
setNextScheduleTimeOverridewurde hinzugefügt, mit der sich periodische Arbeitszeitpläne genau festlegen lassen (I3b4da). getEarliestRunTimeMilliswurde ingetNextScheduleTimeMillisumbenannt. (I2bd7a)- Informationen zur nächsten geplanten Ausführung werden
WorkInfohinzugefügt. (I797e4) WorkInfowerden 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 inConstraints.Builderangeglichen, die seit frühen Versionen vonWorkManagervorhanden waren. (I6d7d2) WorkManagerhat jetzt ein separates Limit für Content-URI-Worker, um ihnen garantierte Slots inJobSchedulerzu geben und zu verhindern, dass bei hoher Last Content-Updates fehlen. Das Limit kann überConfiguration.Builder.setContentUriTriggerWorkersLimitkonfiguriert werden. (Ic128f)WorkInfowerden 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
RescheduleReceiverbehoben, 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
- Es wurde die Möglichkeit hinzugefügt,
WorkRequestsauf nicht aufdringliche Weise zu aktualisieren, wobei die ursprüngliche Enqueue-Zeit, Verkettung usw. beibehalten werden. Weitere Informationen finden Sie in diesem ausführlichen Blogpost sowie in der Javadoc-Dokumentation fürWorkManager.updateWorkundExistingPeriodicWorkPolicy.UPDATE.
API-Änderungen
WorkManager.updateWorkwurde hinzugefügt, um die Arbeit zu aktualisieren und dabei die ursprüngliche Enqueue-Zeit und Verkettung beizubehalten.(I9a248, b/219446409)ExistingPeriodicWorkPolicy.UPDATEwurde hinzugefügt. Diese Richtlinie ermöglicht die Aktualisierung eines periodischen Werks anhand des Namens. Sie ähnelt der vorhandenenREPLACE, 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.REPLACEwurde eingestellt, um Verwechslungen mit der sehr ähnlich benannten FunktionREPLACEundUPDATEzu vermeiden. Wenn Sie die bisherige Semantik vonREPLACEbeibehalten möchten, können Sie die neu hinzugefügte FunktionCANCEL_AND_REENQUEUEverwenden, die mitREPLACEidentisch 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
OneTimeWorkRequestundPeriodicWorkRequestwurden vonandroidx.work:work-runtime-ktxnachandroidx.work:work-runtimeverschoben (I0010f, b/209145335) - Die Hilfsmethoden
WorkQuery.fromIds,WorkQuery.fromStates,WorkQuery.fromUniqueWorkNamesundWorkQuery.fromTagswurden hinzugefügt, umWorkQuerydirekt zu erstellen. (b/199919736) (If48f2, b/199919736) getForegroundInfowurde zuWorkerhinzugefügt. (Ic1ead)RxWorkersowohl für RxJava 2 als auch für RxJava 3 hat jetztsetForeground, dasCompletablezurückgibt und anstelle vonsetForegroundInfoAsyncverwendet werden kann, dasListenableFuturezurückgibt.RxWorkersowohl für RxJava 2 als auch für RxJava 3 gibtgetForegroundInfoSinglezurück, das anstelle vongetForegroundInfoAsyncverwendet werden kann, dasListenableFuturezurückgibt. (b/203851459)- Einschränkungen können jetzt direkt erstellt werden, anstatt
Constraints.Builderzu verwenden. Das ist für Kotlin-Nutzer praktisch. (Idc390, b/137568653) - Es wurde die Möglichkeit hinzugefügt, zu prüfen, ob
WorkManagerinitialisiert wurde. Außerdem wurde eine neuegetConfiguration()API für Bibliotheksentwickler hinzugefügt, mit der die Konfiguration abgerufen werden kann, mit derWorkManagerinitialisiert 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
@RequiresPermissionwurde APIs hinzugefügt, für die die BerechtigungPOST_NOTIFICATIONSfür SDK 33 und höher erteilt werden muss. (Ie542e, b/238790278) - Stornierungen in
CoroutineScopeanListenableFutureweitergeben, wennsuspendCancellableCoroutineverwendet 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
equalsinWorkInfowurde 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()undWorkerParameters.getGeneration()wurden hinzugefügt, um die Generation eines Workers zurückzugeben. Ein Worker hat mehrere Generationen, wenn er überWorkManager.updateWorkoderWorkManager.enqueueUniquePeriodicWorkmitExistingPeriodicWorkPolicy.UPDATEaktualisiert 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)InitializationExceptionHandlerwurde hinzugefügt, ein Exception Handler, mit dem sich feststellen lässt, ob beim Initialisieren vonWorkManagerProbleme 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,
WorkRequestsauf nicht aufdringliche Weise zu aktualisieren, wobei die ursprüngliche Enqueue-Zeit, Verkettung usw. beibehalten werden. Weitere Informationen finden Sie unterWorkManager.updateWorkundExistingPeriodicWorkPolicy.UPDATE.
API-Änderungen
WorkManager.updateWorkwurde hinzugefügt, um die Arbeit zu aktualisieren und dabei die ursprüngliche Enqueue-Zeit und Verkettung beizubehalten.(I9a248, b/219446409)ExistingPeriodicWorkPolicy.UPDATEwurde hinzugefügt. Mit dieser Richtlinie kann ein wiederkehrendes Werk anhand des Namens aktualisiert werden. Sie ähnelt der vorhandenenREPLACE, 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.REPLACEwurde eingestellt, um Verwechslungen zwischen den sehr ähnlich benanntenREPLACEundUPDATEzu vermeiden. Wenn Sie die bisherige Semantik vonREPLACEbeibehalten möchten, können Sie die neu hinzugefügteCANCEL_AND_REENQUEUEverwenden, die mitREPLACEidentisch ist. (I985ed, b/219446409)- Es wurde die Möglichkeit hinzugefügt, Terminplanungs-Ausnahmen abzufangen, indem ein
SchedulingExceptionHandlerdefiniert wird. (I033eb) - Inline-Helfer für
OneTimeWorkRequestundPeriodicWorkRequestwurden vonandroidx.work:work-runtime-ktxnachandroidx.work:work-runtimeverschoben (I0010f, b/209145335)
Fehlerkorrekturen
@RequiresPermissionwurde 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
WorkManagerinitialisiert wurde. Außerdem wurde eine neuegetConfiguration()API für Bibliotheksentwickler hinzugefügt, mit der die Konfiguration abgerufen werden kann, mit derWorkManagerinitialisiert 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.fromUniqueWorkNamesundWorkQuery.fromTagswurden 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
getForegroundInfozuWorkerhinzu. (Ic1ead) - Es wurden Hilfsmethoden
WorkQuery.fromIdszum direkten Erstellen von WorkQuery aus IDs hinzugefügt. (Ie5bdf, b/199919736) - RxWorker hat jetzt
setForeground, dasCompletablezurückgibt und anstelle vonsetForegroundInfoAsyncverwendet werden kann, dasListenableFuturezurückgibt. (I85156) - RxWorker für RxJava 2 hat jetzt
getForegroundInfo, dasSinglezurückgibt und anstelle vongetForegroundInfoAsyncverwendet werden kann, dasListenableFuturezurückgibt. (I21c91, b/203851459) - RxWorker für RxJava 3 hat jetzt
getForegroundInfo, dasSinglezurückgibt und anstelle vongetForegroundInfoAsyncverwendet werden kann, dasListenableFuturezurückgibt. (I1ca8a) - RxWorker hat jetzt
setForeground, dasCompletablezurückgibt und anstelle vonsetForegroundInfoAsyncverwendet werden kann, dasListenableFuturezurückgibt. (I992a3, b/203851459)
Fehlerkorrekturen
- Stornierungen in
CoroutineScopeanListenableFutureweitergeben, wennsuspendCancellableCoroutineverwendet 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
CoroutineScopewerden bei Verwendung vonsuspendCancellableCoroutinean dieListenableFutureweitergegeben. (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
ListenableWorker.setForegroundAsync()ist nicht mehr veraltet.- Wir empfehlen, nach Möglichkeit die
WorkRequest.Builder.setExpedited(...)API zu verwenden. Um Situationen besser zu unterstützen, in denen die App keinen Einschränkungen für Dienste im Vordergrund unterliegt, können Entwickler dieListenableWorker.setForegroundAsync()API verwenden. - Wenn
ListenableWorker.setForegroundAsync()aufgerufen wird, während für die App Einschränkungen für Dienste im Vordergrund gelten, wird die ForegroundServiceStartNotAllowedException ausgelöst.
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
Ab WorkManager
2.6.0-alpha02: Unterstützung für Worker, die in jedem Prozess ausgeführt werden können. (Iaf200)Aus WorkManager
2.6.0-alpha02: Es wurdeRemoteCoroutineWorkerhinzugefügt, eine Implementierung vonRemoteListenableWorker, die an einen Remote-Prozess gebunden werden kann. (I30578)
API-Änderungen
- WorkManager
2.6.0-alpha02:TEMPORARILY_UNMETERED-Netzwerkbeschränkung wird jetzt unterstützt. (I08d5e) - Ab WorkManager
2.6.0-alpha02:Unterstützung von Worker-Prozessen fürsetProgressAsync(). (Ib6d08) - Aus WorkManager
2.6.0-alpha02:Machen SieWorkManagerInitializeröffentlich, damit andereandroidx.startup.Initializers sie als Abhängigkeiten verwenden können. (I5ab11)
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
PendingIntentwird 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 neue
WorkRequest.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
WorkRequestals 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 anJobSchedulerdelegiert. 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 Sietools:node="remove"verwendet haben, umContentProviderzu 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
RemoteCoroutineWorkerhinzugefü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
RemoteWorkManagerwird jetzt korrekt vonRemoteWorkManagerServicegetrennt, sodassRemoteWorkManagerServicekorrekt bereinigt werden kann. aosp/1730694RemoteListenableWorkerwird jetzt korrekt vonRemoteWorkerServicegetrennt, sodassRemoteWorkerServicekorrekt bereinigt werden kann. aosp/1743817ForceStopRunnablewird 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
RemoteCoroutineWorkerhinzugefügt, eine Implementierung vonRemoteListenableWorker, die an einen Remote-Prozess gebunden werden kann. (I30578)
API-Änderungen
- Unterstützung für die Netzwerkbeschränkung
TEMPORARILY_UNMETEREDhinzugefügt. (I08d5e) - Unterstützung von Worker-Prozessen für
setProgressAsync(). (Ib6d08) - Machen Sie
WorkManagerInitializeröffentlich, damit andereandroidx.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
WorkManagerverwendet jetztandroidx.startup, um WorkManager zu initialisieren. Bisher wurde dies vonandroidx.work.impl.WorkManagerInitializererledigt. (aosp/1608813)Wenn Sie
tools:node="remove"ContentProviderverwendet 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 dieoutputDatades 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 einSecurityExceptionausgelö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-multiprocessverwenden 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-multiprocessverwenden, sollten Sie auch RemoteWorkManager verwenden, um IhreWorkRequests zu verwalten. RemoteWorkManager kommuniziert immer mit dem dafür vorgesehenen Prozess. Der In-Process-Scheduler wird ebenfalls im dafür vorgesehenen Prozess ausgeführt.
- Wenn Sie
- Manchmal kann
ActivityManagerdieJobService-Instanz nicht instanziieren, um einen Job zu starten. Dadurch wird der zugrunde liegende Job aufgrund eines Plattformfehlers stillschweigend gelöscht.WorkManagersorgt jetzt dafür, dass es für jede einzelneWorkRequestSicherungsjobs gibt, wenn einApplicationdurch Abgleichsjobs initialisiert wird. Dadurch wird die Zuverlässigkeit der Jobausführung erheblich verbessert. (b/172475041, aosp/1489577) WorkManagerbegrenzt das Datenbankwachstum, indem die Pufferdauer reduziert wird, in derWorkRequestnach Abschluss einerWorkRequesterfasst werden. Die Dauer betrug zuvor7Tage. Sie wurde auf1Tage + die Dauer von keepResultsForAtLeast reduziert. (aosp/1419708)- Die
TestListenableWorkerBuilderunterstützt jetzt die reifizierte Klasse, dieListenableWorkererweitert, 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
getWorkInfosLiveDatanach der Aktualisierung von Einheiten bei Verwendung derWorkQuery-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
ConstraintTrackingWorkerso, dass nur einListenableWorkerbeendet 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-multiprocesswurde 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
PeriodicWorkRequestnicht 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
WorkManagerdrosselt automatisch die Anzahl derWorkRequests, die vom In-Process-Scheduler aufgenommen werden können. Die Anfragen werden weiterhin in der Reihenfolge ihres Eingangs ausgeführt. (aosp/1455228)WorkManagerversucht, die Daten wiederherzustellen, wenn sich der Datenspeicher der Anwendung in einem fehlerhaften Zustand befindet. (aosp/1463103)
Fehlerkorrekturen
- Wenn
ListenableWorkerunterbrochen werden, markieren Sie sie sofort alsENQUEUED, 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
TestListenableWorkerBuilderundTestWorkerBuilderverwenden keine Rohdatentypen. (I883ad, b/169787349)
Fehlerkorrekturen
- Mit
ApplicationInfokönnen Sie den Namen des Standard-App-Prozesses ermitteln. (b/168716641, aosp/1429950) - Korrigieren Sie die Sichtbarkeitsregeln für
RemoteWorkManagerundRemoteWorkContinuation. Diese APIs sind nicht mehr als@Restrictedgekennzeichnet. (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, umWorkInfos 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.processNameist ein voll qualifizierter Prozessname, der so aussieht:packageName:processName(z.B.com.example:remote). - Eine Reihe neuer APIs:
RemoteWorkManagerundRemoteWorkContinuationbisenqueue,cancelundqueryArbeitsanfragen. Diese APIs enthalten keineLiveData-Varianten, um SQLite-Konflikte zwischen mehreren Prozessen zu vermeiden. Alle Aufrufe vonenqueue,cancelundquerywerden mithilfe von AIDL an einenprimary-App-Prozess weitergeleitet und geben einen flüssigenListenableFuturezurück. (aosp/1392657, aosp/1411210, aosp/1412215, aosp/1417713)
- 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
API-Änderungen
- WorkManager löscht jetzt abgeschlossene
WorkRequests ohne unvollständige Abhängigkeiten aggressiver. Die Pufferdauer wurde von7Tagen auf1Tag geändert. (aosp/1419708)
Fehlerkorrekturen
- WorkManager gleicht Jobs jetzt proaktiv ab, sodass
WorkRequest- undJobScheduler-Jobs synchronisiert werden, wennWorkManagerinitialisiert 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
WorkManagerbereitzustellen. Wir halten Sie auf dem Laufenden.
Fehlerkorrekturen
- Behandlung von
SecurityExceptionbeim Erfassen des Netzwerkstatus auf einigen Geräten. (aosp/1396969)
Externer Beitrag
- Dokumentation für
ArrayCreatingInputMergervon Zac Sweers korrigiert (github/43).
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
WorkManagerist jetzt leistungsfähiger. Bisher wurden bei der In-Process-Schedulernur Arbeiten ausgeführt, die nicht verzögert wurden und deren Einschränkungen erfüllt waren. Der In-Process-Scheduler verfolgt jetztWorkRequests, die in Zukunft ausgeführt werden könnten, einschließlich PeriodicWorkRequests. Das In-Process-Schedulerunterliegt auch keinen Planungsbeschränkungen, ist aber weiterhin auf die Größe desExecutorbeschrä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 inWorkManagerauch ein neues konfigurierbaresRunnableSchedulereingefü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 einesWorkQueryabzufragen. Das ist nützlich, wenn EntwicklerWorkInfos anhand einer Kombination aus mehreren Attributen abfragen möchten. Weitere Informationen finden Sie unterWorkQuery.Builder.fromStates(...),WorkQuery.Builder. fromTags(...)oderWorkQuery.Builder.fromUniqueWorkNames(...). (aosp/1253230, b/143847546) Fügen Sie die Möglichkeit hinzu, Diagnoseinformationen von
WorkManageranzufordern, 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_REPLACEhinzu. Das ist ähnlich wieAPPEND, ersetzt aber eine Kette, bei der Voraussetzungen abgebrochen oder fehlgeschlagen sind. (b/134613984, aosp/1199640)Es ist möglich, ein benutzerdefiniertes
RunnableSchedulerhinzuzufü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
DelegatingWorkerFactoryhinzugefü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
foregroundServiceTypebei Verwendung vonsetForegroundAsync()-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 jetztpublicsind, wenn die Standard-WorkerFactoryverwendet wird. (aosp/1291262)
- Verwendung der richtigen
Aufrufe von
setForegroundAsync(), die nicht vor Abschluss einesListenableWorkerabgeschlossen werden, werden jetzt über einIllegalStateExceptionim zurückgegebenenListenableFuturesignalisiert. (aosp/1262743)Es wurde ein Fehler behoben, durch den
ForegroundServicenicht beendet wurde, nachdem einWorkerim Vordergrund unterbrochen wurde. (b/155579898, aosp/1302153)Ein Fehler wurde behoben, bei dem
WorkManagerversucht, mehrere Instanzen vonWorkerauszufü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
ForegroundServicenicht beendet wurde, nachdem einWorkerim Vordergrund unterbrochen wurde. (b/155579898, aosp/1302153) - Ein Fehler wurde behoben, bei dem
WorkManagerversucht, mehrere Instanzen vonWorkerauszufü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
DelegatingWorkerFactoryhinzugefü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 jetztpublicsind, wenn die Standard-WorkerFactoryverwendet wird. (aosp/1291262)
API-Änderungen
- Wenn Sie
setProgressAsync()aufrufen, nachdem die Ausführung einesListenableWorkerabgeschlossen ist, wird jetzt über dieListenableFutureeinExceptionsignalisiert. (aosp/1285494) WorkQuery.Builderist jetzt mitfinalgekennzeichnet. (aosp/1275037)- Die
WorkQuery.Builder-Factory-MethodenwithStates,withTagsundwithUniqueWorkNameswurden infromStates,fromTagsbzw.fromUniqueWorkNamesumbenannt. (aosp/1280287)
Fehlerkorrekturen
SecurityExceptions beim Erfassen des Netzwerkstatus eines Geräts ignorieren. (b/153246136, aosp/1280813)
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
WorkRequestsowohlConstraints.setRequiresCharging(...)als auchConstraints.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 einesWorkQueryabzufragen. Das ist nützlich, wenn EntwicklerWorkInfos anhand einer Kombination aus mehreren Attributen abfragen möchten. Weitere Informationen finden Sie unterWorkQuery.Builder withStates(...),WorkQuery.Builder withTags(...)oderWorkQuery.Builder withUniqueWorkNames(...). (aosp/1253230, b/143847546)Aufrufe von
setForegroundAsync(), die nicht vor Abschluss einesListenableWorkerabgeschlossen werden, werden jetzt über einIllegalStateExceptionim zurückgegebenenListenableFuturesignalisiert. (aosp/1262743)
Fehlerkorrekturen
- Die Lint-Regel, mit der nach ungültigen Intervallzeiträumen für
PeriodicWorkRequestgesucht 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
WorkManagerist 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 jetztWorkRequest, die in Zukunft ausgeführt werden könnten, einschließlichPeriodicWorkRequest. Der In-Process-Scheduler berücksichtigt keine Planungslimits (ist aber weiterhin auf die Größe des von WorkManager verwendetenExecutorbeschränkt). Das bedeutet, dass die Anwendung jetzt viel mehrWorkRequests 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
foregroundServiceTypebei Verwendung vonsetForegroundAsync()-APIs. (b/147873061, aosp/1215915) - Angabe von
JobScheduler-IDs, dieWorkManagerbei der direkten Verwendung vonJobService-APIs verwenden soll. (aosp/1223567)
- Verwendung des richtigen
API-Änderungen
Fügen Sie
ExistingWorkPolicy.APPEND_OR_REPLACEhinzu. Das ist ähnlich wieAPPEND, aber ersetzt eine Kette, bei der Voraussetzungen abgebrochen oder fehlgeschlagen sind. (b/134613984, aosp/1199640)Es soll möglich sein, ein benutzerdefiniertes
RunnableSchedulerhinzuzufügen, umWorkRequestzu verfolgen, die in Zukunft ausgeführt werden müssen. Wird vom In-Process-Scheduler verwendet. (aosp/1203944)
Fehlerkorrekturen
setProgress()inRxWorkerwurde eingestellt, da zuvor einSingle<Void>zurückgegeben wurde, was ein unmöglicher Typ ist. Wir haben eine neue APIsetCompletableProgress()hinzugefügt, die stattdessenCompletablezurü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
Workerausgeführt wurden, nachdem das Ausführungsfenster von 10 Minuten überschritten wurde. (aosp/1247484, b/150553353) - Korrektur für den Lint-Fehler
IssueRegistryvon 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
Workernicht 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 andauerndeWorkers besser verwalten, die ausgeführt werden, wenn einServiceim Vordergrund aktiv ist. (aosp/1218539, b/147249312) WorkManagerhängt jetzt vonandroidx.sqlite:sqlite-framework:2.1.0stable ab. (aosp/1217729)- Es wurden Lint-Regeln hinzugefügt, um sicherzustellen, dass bei der Verwendung von
foregroundServiceTypeinForegroundInfoeinforegroundServiceTypeinAndroidManifest.xmlangegeben 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 eineapi-Abhängigkeit vonwork-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.WorkManagerInitializerausAndroidManifest.xmlentfernt wird, wenn die On-Demand-Initialisierung verwendet wird. (aosp/1167007) - Es wurde eine Lint-Warnung hinzugefügt, wenn
enqueue()für einPeriodicWorkRequestanstelle vonenqueueUniquePeriodicWork()verwendet wird. (aosp/1166032)
API-Änderungen
- Bei
ForegroundInfomüssen Sie jetztnotificationIdangeben, wenn SieListenableWorker.setForegroundAsync()verwenden. Dies ist eine funktionsgefährdende Änderung. So können Sie mehrere lang andauerndeWorkers parallel ausführen.WorkManagerverwaltet auch die Lebensdauer der bereitgestelltenNotifications 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 falscheWorkContinuation-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.Providerbei 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 sichWorkRequests einfach abbrechen lassen, ohne dass eine weitere Komponente in derAndroidManifest.xmlregistriert werden muss. Mit dieser API lassen sichWorkRequests besonders einfach überNotifications 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.0stable ab.
API-Änderungen
ForegroundInfo.getNotificationType()wurde inForegroundInfo.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()(oderCoroutineWorker#setForeground()für Kotlin). (aosp/1133636)
API-Änderungen
- Die
containsKeyAPI inDatawurde inhasKeyWithValueOfTypeumbenannt. Die entsprechende Erweiterungsmethode in derktx-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)
Datahat jetzt eine viel nützlicheretoString()-Darstellung. (b/140945323)Datahat jetzt eine bessereequals()-Methode. Außerdem wirddeepEqualsfürArray-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
ListenableWorkerkönnen jetzt den Fortschritt über diesetProgressAsync()API festlegen. Außerdem wurde inCoroutineWorkereine entsprechendesuspend-APIsetProgressund inRxWorkereinesetProgresshinzugefügt, die einSingle<Void>zurückgibt. Mit diesen neuen APIs können Worker Fortschrittsinformationen überWorkInfoübermitteln. Dafür gibt es eine entsprechendegetProgressAPI. (b/79481554)Datahat einecontainsKey()-API, mit der sich prüfen lässt, ob die Eingabedaten fürWorkerSchlüssel mit dem erwarteten Typ enthalten. (b/117136838)Datakann jetzt mitData.toByteArray()undData.fromByteArray()serialisiert werden. Beachten Sie, dass es beiDatakeine 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überConfiguration.setInputMergerFactoryanzugeben. (b/133273159)
API-Änderungen
- WorkManager löst eine Instanz von
IllegalStateExceptionaus, wenn einWorkerFactoryeine Instanz vonListenableWorkerzurückgibt, die zuvor aufgerufen wurde. (b/139554406) - Dokumentationsaktualisierungen zur
ListenableFuture-Kündigung und zumonStopped()-Callback inListenableWorker. (b/138413671)
Diverse Fehlerkorrekturen
- Der In-Process-Scheduler ignoriert jetzt
WorkRequests mit der Einschränkungidle. Diese Anfragen werden jetzt nur noch vonJobSchedulererfasst, wenn das Gerät tatsächlichidleist. (aosp/1089779) TestSchedulerverwendet jetzt in Tests korrekt die angegebeneExecutorfü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
RejectedExecutionExceptionangezeigt wurde. (aosp/1092374) (b/138238197). - Es wurde eine Problemumgehung für einen
NullPointerExceptionbei der Verwendung vonJobSchedulerAPIs 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-beta01eingefü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-beta01ist 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
IllegalArgumentExceptionbei 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-ktxist jetzt Java 8 erforderlich. Sollten Probleme auftreten, können Sie Folgendes zu Ihrembuild.gradlehinzufü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:
- Automatischen Initialisierer deaktivieren
- Implementieren Sie
Configuration.Providerfür Ihr benutzerdefiniertesApplication-Objekt. - Ändern Sie alle Verweise auf
WorkManager.getInstance()inWorkManager.getInstance(Context). Im Rahmen dieser Änderung haben wirWorkManager.getInstance()eingestellt. Es ist immer sicherer, den neuenWorkManager.getInstance(Context)-Ersatz aufzurufen, auch wenn Sie keine On-Demand-Initialisierung durchführen.
PeriodicWorkRequestunterstützen jetzt anfängliche Verzögerungen. Mit der MethodesetInitialDelayfürPeriodicWorkRequest.Builderkönnen Sie eine anfängliche Verzögerung festlegen. b/111404867- Es wurde die Möglichkeit hinzugefügt, die -Funktion mit
DelegatingWorkerFactoryan einen oder mehrere registrierteWorkerFactorys zu delegieren. b/131435993 - Es wurde die Möglichkeit hinzugefügt, die
Executoranzupassen, die von WorkManager für alle internen Verwaltungsaufgaben überConfiguration.Builder.setTaskExecutorverwendet wird. - Es wurde die Möglichkeit hinzugefügt, mithilfe von
TestWorkerBuilderundTestListenableWorkerBuilderimwork-testing-ArtefaktWorker- undListenableWorker-Klassen zu erstellen, die sich für Unittests eignen.work-testingzieht jetzt Kotlin als Abhängigkeit ein und enthält standardmäßig mehrere Kotlin-Erweiterungen.
WorkInfowurde die Anzahl der Ausführungsversuche hinzugefügt. b/127290461Data-Typen können jetzt Byte und Byte-Arrays speichern und abrufen. Dadurch wird die maximale Größe vonData-Objekten NICHT geändert.- WorkManager hängt jetzt von
Room 2.1.0ab, 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
JobSchedulerausgefü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
TestListenableWorkerBuilderverwendet jetzt das richtigeWorkerFactorybeim Erstellen von Instanzen vonListenableWorker. b/135275844- Ein Fehler wurde behoben, der aufgrund von Prozessbeendigung zu Abweichungen bei den Ausführungszeiträumen für
WorkRequestgefü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.0ab, 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. WorkManagerTestInitHelperverwendet 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
JobSchedulerbeim 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
PeriodicWorkRequestunterstützen jetzt anfängliche Verzögerungen. Mit der MethodesetInitialDelayfürPeriodicWorkRequest.Builderkönnen Sie eine anfängliche Verzögerung festlegen. b/111404867Es wurde die Möglichkeit hinzugefügt, die -Funktion mit
DelegatingWorkerFactoryan einen oder mehrere registrierteWorkerFactorys zu delegieren. b/131435993Es wurde die Möglichkeit hinzugefügt, die
Executoranzupassen, die von WorkManager für alle internen Verwaltungsaufgaben überConfiguration.Builder.setTaskExecutorverwendet wird.Die Dokumentation zu
WorkRequest.keepResultsForAtLeast(b/130638001), zur On-Demand-Initialisierung und zuPeriodicWorkRequest.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:
- Automatischen Initialisierer deaktivieren
- Implementieren Sie
Configuration.Providerfür Ihr benutzerdefiniertesApplication-Objekt. - Ändern Sie alle Verweise auf
WorkManager.getInstance()inWorkManager.getInstance(Context). Im Rahmen dieser Änderung haben wirWorkManager.getInstance()eingestellt. Es ist immer sicherer, den neuenWorkManager.getInstance(Context)-Ersatz aufzurufen, auch wenn Sie keine On-Demand-Initialisierung durchführen.
- Es wurde die Möglichkeit hinzugefügt, mithilfe von
TestWorkerBuilderundTestListenableWorkerBuilderimwork-testing-ArtefaktWorker- undListenableWorker-Klassen zu erstellen, die sich für Unittests eignen.work-testingzieht jetzt Kotlin als Abhängigkeit ein, enthält aber auch standardmäßig mehrere Kotlin-Erweiterungen.
WorkInfowurde die Anzahl der Ausführungsversuche hinzugefügt. b/127290461Data-Typen können jetzt Bytes und Byte-Arrays speichern und abrufen. Dadurch wird die maximale Größe vonData-Objekten NICHT geändert.CoroutineWorker.coroutineContexteingestellt. Dieses Feld wurde fälschlicherweise alsCoroutineDispatchereingegeben. 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()undRxWorker.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
PeriodicWorkRequestwurde 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
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
StackOverflowErrorwurde 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/124546316Workers, die eine ungeprüfteExceptionauslösen, werden jetzt korrekt alsFAILEDgekennzeichnet 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
NullPointerExceptionauf 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-beta02eingefü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
ConcurrentModificationExceptionauf Geräten mit Android 5.1 (API) oder niedriger wurde behoben. Dies ist eine Fortsetzung der Korrektur in1.0.0-beta02. b/121345393 exported=falsefü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
ConcurrentModificationExceptionauf 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
LiveDatazu beheben, die von WorkManager verwendet werden. - Es wird jetzt die
Room-Abhängigkeit1.1.1anstelle von1.1.1-rc01verwendet. 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.Resultwurde als innere Klasse vonListenableWorkerverschoben. So werden Refactoring-Konflikte mit derResult-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.Resultwurde als innere Klasse vonListenableWorkerverschoben.
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-rxjava2wirdRxWorkereingeführt. Dies ist einListenableWorker, der einSingle<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. PayloadmitResultzusammengeführt.Resultist jetzt eine „sealed class“ mit drei konkreten Implementierungen, die Sie überResult.success()(oderResult.success(Data)),Result.failure()(oderResult.failure(Data)) undResult.retry()abrufen können. IhreListenableFutures führen jetzt zuResultanstelle vonPayload.Workerhaben keine Getter- und Setter-Methoden für die AusgabeData. Dies ist eine funktionsgefährdende Änderung.Constraints.Builder.setTriggerContentMaxDelay(long, TimeUnit)undConstraints.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()undListenableFuture.await()wurden hinzugefügt. Operation.getException()wurde inOperation.getThrowable()umbenannt. Dies ist eine funktionsgefährdende Änderung.- Die Klasse
ContentUriTriggersund Methoden, die darauf verweisen, sind nicht mehr öffentlich verfügbar. Dies ist eine funktionsgefährdende Änderung. - Die restlichen Varargs-Methoden in
WorkManager,WorkContinuationundOneTimeWorkRequestwurden entfernt, um die API zu optimieren. Um Build-Probleme zu beheben, können Sie Ihre vorhandenen Varargs mitArrays.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 vorhandenencombine-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 überobserveForeverbeobachtet wird, wird über WorkManager erfasst. Dies ist ein Backport einer Korrektur für die Room-Bibliothek. b/74477406Data.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ährendListenableWorker.onStopped()einWorkInfomit demCANCELLEDStatezurück. - Behandeln Sie
nullResults als Fehler inListenableWorker. 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. Payloadwurde mitResultzusammengeführt.Resultist jetzt eine „sealed class“ mit drei konkreten Implementierungen, die Sie überResult.success()(oderResult.success(Data)),Result.failure()(oderResult.failure(Data)) undResult.retry()abrufen können. IhreListenableFutures führen jetzt zuResultanstelle vonPayload.Workerhaben keine Getter- und Setter-Methoden für die AusgabeData.- Die Kotlin-Erweiterungsmethoden
Operation.await()undListenableFuture.await()wurden hinzugefügt. Operation.getException()wurde inOperation.getThrowable()umbenannt.- Die Klasse
ContentUriTriggersund Methoden, die darauf verweisen, sind nicht mehr öffentlich verfügbar. - Die restlichen Varargs-Methoden in
WorkManager,WorkContinuationundOneTimeWorkRequestwurden entfernt, um die API zu optimieren. Um Build-Probleme zu beheben, können Sie Ihre vorhandenen Varargs mitArrays.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 vorhandenencombine-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-ktxführt eine neueCoroutineWorkerein.- „
WorkStatus“ wurde in „WorkInfo“ umbenannt. Alle entsprechendengetStatus-Methodenvarianten wurden in die entsprechendengetWorkInfo-Varianten umbenannt. Dies ist eine funktionsgefährdende Änderung. ListenableWorker.onStopped()akzeptiert jetzt ein boolesches Argument, das angibt, ob dieWorkRequestgekündigt wurde. BeiWorkManagerwird diese Unterscheidung nicht mehr getroffen. Dies ist eine funktionsgefährdende Änderung.- Das Paket
androidx.work.testwurde in das Paketandroidx.work.testingumbenannt. Dies ist eine funktionsgefährdende Änderung. - Setter für
Constraintssind nicht mehr Teil der öffentlichen API. Dies ist eine funktionsgefährdende Änderung. WorkerParameters.getTriggeredContentUris()undWorkerParameters.getTriggeredContentAuthorities()haben zuvor Arrays zurückgegeben. Diese Methoden geben jetzt Sammlungen zurück. Dies ist eine funktionsgefährdende Änderung.ListenableWorker.onStartWork()wird inListenableWorker.startWork()umbenannt. Dies ist eine funktionsgefährdende Änderung.- Der Konstruktor für
WorkStatusist nicht mehr Teil der öffentlichen API. Dies ist eine funktionsgefährdende Änderung. Configuration.getMaxJobSchedulerID()undConfiguration.getMinJobSchedulerID()werden inConfiguration.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 eindeutigeOneTimeWorkRequests in die Warteschlange zu stellen, ohne eineWorkContinuationerstellen zu müssen. - Alle Varianten der Methoden
enqueueundcancelfürWorkManagergeben jetzt einen neuenOperation-Typ zurück. Dies ist eine funktionsgefährdende Änderung. - Alle Varianten von
enqueueakzeptieren keine Varargs mehr fürWorkRequests. Dies ist eine funktionsgefährdende Änderung. Verwenden Sie stattdessen Sammlungen. MitArrays.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,
initializeWorkManagermehr als einmal pro Prozess auszuführen, wird jetzt einIllegalStateExceptionzurückgegeben. Dies ist eine funktionsgefährdende Änderung.
Fehlerkorrekturen
WorkRequest.Builderimwork-runtime-ktx-Artefakt verwenden jetztListenableWorker. Behebt b/117666259- Die nächste Ausführungszeit für
PeriodicWorkmuss 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
WorkConstraintsTrackerwurde behoben. Behebt android-workmanager/issues/56
Breaking API Changes
- „
WorkStatus“ wurde in „WorkInfo“ umbenannt. Alle entsprechendengetStatus-Methodenvarianten wurden in die entsprechendengetWorkInfo-Varianten umbenannt. ListenableWorker.onStopped()akzeptiert jetzt ein boolesches Argument, das angibt, ob dieWorkRequestgekündigt wurde. BeiWorkManagerwird diese Unterscheidung nicht mehr getroffen.- Das Paket
androidx.work.testwurde inandroidx.work.testingumbenannt. - Setter für
Constraintssind nicht mehr Teil der öffentlichen API. WorkerParameters.getTriggeredContentUris()undWorkerParameters.getTriggeredContentAuthorities()haben zuvor Arrays zurückgegeben. Diese Methoden geben jetzt Sammlungen zurück.ListenableWorker.onStartWork()wird inListenableWorker.startWork()umbenannt.- Der Konstruktor für
WorkStatusist nicht mehr Teil der öffentlichen API. Configuration.getMaxJobSchedulerID()undConfiguration.getMinJobSchedulerID()werden inConfiguration.getMinJobSchedulerId()bzw.Configuration.getMaxJobSchedulerId()umbenannt.- Alle Varianten der Methoden
enqueueundcancelfürWorkManagergeben jetzt einen neuenOperation-Typ zurück. - Alle Varianten von
enqueueakzeptieren keine Varargs mehr fürWorkRequests. - Wenn Sie versuchen,
initializeWorkManagermehr als einmal pro Prozess auszuführen, wird jetzt einIllegalStateExceptionzurü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 StandardkonstruktorWorker. Dies ist eine funktionsgefährdende API-Änderung. - Die Klasse
NonBlockingWorkerwurde inListenableWorkerumbenannt. Sie ist jetzt eine nicht ausgeblendete öffentliche Klasse und kann verwendet werden.ListenableWorkerbietet 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 SieListenableFutureentsprechend aktualisieren. Referenzimplementierungen vonListenableFutures sind im PaketFuturesinalpha02verfügbar (siehe unten im AbschnittWorkManager).WorkererweitertListenableWorkerund funktioniert weiterhin wie zuvor mit einer abstraktenResult doWork()-Methode.- Einige Methoden und Elemente wurden von
WorkernachListenableWorkerverschoben. - Wir werden demnächst Referenzimplementierungen für
ListenableWorkers bereitstellen, die Kotlin-Coroutinen (sobald die stabilen Versionen veröffentlicht werden) und RxJava2 verwenden.
- Die Schnittstelle
WorkerFactoryund die konkrete ImplementierungDefaultWorkerFactorywurden in einer abstrakten Klasse namensWorkerFactoryzusammengeführt. Die Implementierung sorgt dafür, dass das standardmäßige auf Reflexion basierende Verhalten als letzter Ausweg für alle von Nutzern erstelltenWorkerFactory-Instanzen aufgerufen wird. Dies ist eine funktionsgefährdende Änderung. WorkManager.synchronous()undWorkContinuation.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
ListenableFutureverwenden.WorkManager.enqueue()hat beispielsweise frühervoidzurückgegeben, jetzt wird einListenableFuture<Void>zurückgegeben. Sie könnenListenableFuture.addListener(Runnable, Executor)oderListenableFuture.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 vonFuture. - Um die Parität mit den synchronen
getStatus*-Methoden aufrechtzuerhalten, haben wirListenableFuture-Varianten bereitgestellt und die vorhandenen Methoden, dieLiveDatazurü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.
- Sie können jetzt synchron Daten abrufen und beobachten, indem Sie
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 Sieexclude '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
NullPointerExceptionin einer Race-Bedingung behoben, in der die ArbeitREPLACEwurde. b/116253486 und b/116677275 WorkContinuation.combine()akzeptiert jetzt ein oder mehrereWorkContinuations anstelle von mindestens zwei. b/117266752
Breaking API Changes
- Alle zuvor verwendeten
deprecated-Methoden und -Klassen wurden entfernt, insbesondere der StandardkonstruktorWorker. - Die Schnittstelle
WorkerFactoryund die konkrete ImplementierungDefaultWorkerFactorywurden in einer abstrakten Klasse namensWorkerFactoryzusammengeführt. WorkManager.synchronous()undWorkContinuation.synchronous()wurden entfernt.WorkManager.getStatus*()-Methoden geben jetztListenableFutures zurück.WorkManager.getStatus*LiveData()gibtLiveDatazurü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 liegendeWorker. 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
LiveDataintern.
API-Änderungen
- Sie können jetzt eigene
Worker-Instanzen zur Laufzeit erstellen, indem Sie einWorkerFactoryals Teil desWorkManager.Configurationangeben. Die Fallback-Factory istDefaultWorkerFactory, was dem Verhalten früherer Versionen von WorkManager entspricht.- Die Standardkonstruktoren für
WorkerundNonBlockingWorkersind jetzt als veraltet markiert. Verwenden Sie den neuen Konstruktor (Worker(Context, WorkerParameters)) und rufen Siesuper(Context, WorkerParameters)auf. In zukünftigen Versionen von WorkManager wird der Standardkonstruktor entfernt.
- Die Standardkonstruktoren für
- 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, dassNonBlockingWorkerwieder sichtbar gemacht werden kann. - Es ist jetzt möglich, zeitgesteuerte Aufgaben in
TestDriverüberTestDriver.setInitialDelayMet(UUID)undTestDriver.setPeriodDelayMet(UUID)auszulösen. b/113360060
Aktuelle Änderungen
- Die Standardkonstruktoren
WorkerundNonBlockingWorkersind 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
Datawurden 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 vonJobSchedulerzu 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
JobSchedulerJobs überschritten. b/111569265 - Es wurde ein
ConcurrentModificationExceptioninConstraintTrackerbehoben. b/112272753 - Die Rückgabetyp-Annotationen von
Data.getBooleanArray(String)undData.getIntArray(String)wurden in@Nullableanstelle von@NonNullgeändert. b/112275229
API-Änderungen
Workererweitert jetzt eine neue Klasse,NonBlockingWorker. Das hat keine Auswirkungen auf die aktuelle Nutzung. In Zukunft wirdNonBlockingWorkereine vollständig unterstützte Einheit für benutzerdefinierte Threading-Lösungen sein.- Die Rückgabetyp-Annotationen von
Data.getBooleanArray(String)undData.getIntArray(String)wurden von@NonNullin@Nullablegeändert. b/112275229 - Kotlin-Erweiterungen:
Map.toWorkData()wurde eingestellt und eineworkDataOf(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
PeriodicWorkim Stromsparmodus nicht planmäßig ausgeführt wurde. b/111469837 - Ein Race-Bedingung beim Tracking von Einschränkungen wurde behoben, die zum Absturz von
WorkManagergeführt hat. googlecodelabs/android-workmanager/issues/56 - Erstellen Sie eindeutige
WorkRequests, wenn SieWorkRequest.Builder#build()verwenden. b/111408337 - Aktivieren Sie die Verwendung von
RescheduleReceivernur, wennWorkRequests dies erfordern. b/111765853
Version 1.0.0-alpha05
24. Juli 2018
API-Änderungen
WorkManager.getInstance()ist jetzt mit@NonNullanstelle von@Nullablegekennzeichnet. Wenn das Singleton bei der manuellen Initialisierung nicht richtig initialisiert wird, löst die Methode stattdessen eineIllegalStateExceptionaus. 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 WorkManagerLog.INFOund höher. - Die Signatur von
Data.getString()wurde geändert, sodass kein Standardwert mehr verwendet wird (implizitnull). 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
@hidegekennzeichnet. Dazu gehören derConstraints-Konstruktor,Data.toByteArray()undData.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 vonJobSchedulerdoppelt 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
BroadcastReceiverwurden 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 angegebenenWorkRequestaufgerufen werden. b/111238024
Aktuelle Änderungen
WorkManager.getInstance()wird jetzt mit@NonNullanstelle von@Nullableannotiert.- Die Signatur von
Data.getString()wurde geändert, sodass sie keinen Standardwert mehr akzeptiert (implizitnull). - Einige Methoden, die nur für die interne Verwendung erforderlich sind, wurden als
@hidegekennzeichnet. Dazu gehören derConstraints-Konstruktor,Data.toByteArray()undData.fromByteArray(byte[]).
Version 1.0.0-alpha04
26. Juni 2018
Fehlerkorrekturen
PeriodicWorkRequestwerden jetzt korrekt neu geplant, wenn dieAlarmManager-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
JobSchedulernach 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
WorkRequestwurde behoben. b/109572353.Es wurden Kotlin-Compilerwarnungen bei Verwendung der
work-runtime-ktx-Abhängigkeit behoben.WorkManager verwendet jetzt die
Room-Version1.1.1-rc1.
API-Änderungen
getStatusesSync()wurde hinzugefügt, die synchrone Version vonWorkContinuation.getStatuses().Workerkann zwischen einer vom Nutzer initiierten Kündigung und einem vom Betriebssystem angeforderten temporären Stopp unterscheiden.Worker.isStopped()gibttruezurück, wenn eine Art von Stopp angefordert wurde.Worker.isCancelled()gibttruezurü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 anJobScheduleroderAlarmManagergesendet werden können. So wird verhindert, dassWorkManageralle verfügbarenJobScheduler-Slots belegt.- Es wurde
Configuration.setJobSchedulerJobIdRange(int minJobSchedulerId, int maxJobSchedulerId)hinzugefügt, mit dem ein Bereich vonJobScheduler-Job-IDs definiert werden kann, die für die Verwendung durchWorkManagersicher sind. b/79996760 Worker.getRunAttemptCount()gibt die aktuelle Anzahl der Ausführungen für eine bestimmteWorkerzurück. b/79716516- Mit
WorkManager.enqueueUniquePeriodicWork(String uniqueWorkName, ExistingPeriodicWorkPolicy existingPeriodicWorkPolicy, PeriodicWorkRequest periodicWork)können Sie eindeutigePeriodicWorkRequests in die Warteschlange stellen. b/79600647 - Mit
WorkManager.cancelAllWork()werden alleWorkergekündigt. Bibliotheken, die vonWorkManagerabhängen, können mitWorkManager.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 dasWorkerist. So könnenWorkRequests ohnetags oder wenn dieidnicht verfügbar ist, entfernt werden. b/109572351
Aktuelle Änderungen
Worker.WorkerResultwurde inWorker.Resultumbenannt.Worker.onStoppedhat jetzt einen zusätzlichenisCancelled-Parameter, der auftruefestgelegt ist, wennWorkerexplizit gekündigt wurde.
Version 1.0.0-alpha02
24. Mai 2018
Fehlerkorrekturen
- Es wurde ein
NullPointerExceptionamState.isFinished()behoben. b/79550068 - Ein Problem wurde behoben, das dazu geführt hat, dass
WorkeraufApplication.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
Workerverknü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
floatinDatahinzugefügt. b/79443878 Data.Builder.putAll()gibt jetzt eine Instanz vonBuilderzurück. b/79699162- Mehr Javadoc und Korrekturen in der Dokumentation. b/79691663
API-Änderungen
Workerkönnen auf das Anhalten reagieren. MitWorker.isStopped()können Sie prüfen, ob eineWorkerbeendet wurde.Worker.onStopped()kann für einfache Bereinigungsvorgänge verwendet werden.- Die
Worker.getTags()API gibt einSetvon Tags zurück, die mit demWorkerverknüpft sind. javax.time.Duration-Überladungen für APIs hinzugefügt, die eine Kombination aus Dauer undTimeUnits verwenden. Dies wird durch@RequiresApi(26)geschützt.WorkManager-Erweiterungen wurden vom Paketandroidx.work.ktxin das Paketandroidx.workverschoben. Die alten Erweiterungen sind veraltet und werden in einer zukünftigen Version entfernt.Configuration.withExecutor()wurde verworfen. Verwenden Sie stattdessenConfiguration.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.