WorkManager
Letzte Aktualisierung | Stabile Version | Releasekandidat | Beta-Ausgabe | Alpharelease |
---|---|---|---|---|
30. Juli 2025 | 2.10.3 | - | – | - |
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 der Datei build.gradle
für Ihre App oder Ihr Modul die Abhängigkeiten für die benötigten Artefakte hinzu:
Groovy
dependencies { def work_version = "2.10.3" // (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.10.3" // (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. Lassen Sie es uns wissen, wenn Sie neue Probleme entdecken oder Ideen zur Verbesserung dieser Bibliothek haben. Sehen Sie sich die vorhandenen Probleme in dieser Bibliothek an, bevor Sie ein neues erstellen. Sie können für ein vorhandenes Problem abstimmen, indem Sie auf die Schaltfläche mit dem Stern klicken.
Weitere Informationen finden Sie in der Dokumentation zur Problemverfolgung.
Version 2.10
Version 2.10.3
30. Juli 2025
androidx.work:work-*:2.10.3
wird 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 meldeten, dass ihre Beschränkungen nicht erfüllt wurden. (b/427115602).
Version 2.10.2
18. Juni 2025
androidx.work:work-*:2.10.2
wird veröffentlicht. Version 2.10.2 enthält diese Commits.
Fehlerkorrekturen
- Ein Problem wurde behoben, bei dem Worker mit Netzwerkanfragen und Standardfunktionen beibehalten wurden. Dies führte dazu, dass entfernte Funktionen wieder hinzugefügt wurden und Worker 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
wird veröffentlicht. Version 2.10.1 enthält diese Commits.
Fehlerkorrekturen
- Die Wahrscheinlichkeit, dass
TooManyRequestsException
von der Registrierung vonWorkManager
für einNetworkCallback
, das für die Einschränkungsüberwachung verwendet wird, ausgelöst wird, wird verringert. (b/231499040, b309d5).
Version 2.10.0
30. Oktober 2024
androidx.work:work-*:2.10.0
wird veröffentlicht. Version 2.10.0 enthält diese Commits.
Wichtige Änderungen seit Version 2.9.1
- Jobs wurden Trace-Tags aus
WorkManager
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 vonWorkManager
herum hinzugefügt. Configuration.workerCoroutineContext
wurde hinzugefügt, um den Dispatcher zu steuern, in demCoroutineWorker
ausgeführt wird.- Entwickler können
NetworkRequest
als Einschränkung für einen Worker über die MethodeConstraints.setRequiredNetworkRequest
angeben. So können Sie genauer festlegen, in welchem Netzwerk dieser Worker ausgeführt werden soll. WorkManager
2.10.0 wird jetzt mit SDK 35 kompiliert und enthält verschiedene Änderungen für die Kompatibilität mit SDK 35.
Version 2.10.0-rc01
24. Oktober 2024
androidx.work:work-*:2.10.0-rc01
wird 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
wird 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
wird veröffentlicht. Version 2.10.0-alpha04 enthält diese Commits.
API-Änderungen
- Fügen Sie den Stoppgrund
STOP_REASON_FOREGROUND_SERVICE_TIMEOUT
hinzu, wenn ein Worker im Vordergrund aufgrund eines Ausführungstimeouts basierend auf dem Typ des Dienstes im Vordergrund beendet wird. (Ibd0af)
Version 2.10.0-alpha03
4. September 2024
androidx.work:work-*:2.10.0-alpha03
wird veröffentlicht. Version 2.10.0-alpha03 enthält diese Commits.
Neue Funktionen
- Jobs wurden Trace-Tags aus
WorkManager
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 vonWorkManager
herum hinzugefügt.
API-Änderungen
- WorkManager 2.10.0 wird jetzt mit SDK 35 kompiliert.
- Wir haben das Problem behoben, dass Vordergrund-Worker vom Typ „short service“ und „data sync“ ein Zeitlimit überschritten und einen ANR-Fehler verursacht haben, wenn
WorkManager
nichtstopSelf()
aufgerufen hat. Dieser Fix 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 dieWorker
gebunden wird, wenn eineWorkerFactory
verwendet wird. (Ibdc8a, Ie8a90, I7373f)
Fehlerkorrekturen
- Ein Absturz wurde behoben, der dadurch verursacht wurde, dass
WorkManager
versucht hat, einen Worker mit langer Laufzeit (d.h. einen Worker im Vordergrund) neu zu starten, wenn der Typ des Dienstes im Vordergrund die für Android 14 erforderlichen Berechtigungen hatte, die 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 (z.B. R8-Version 3.3) verwendet wird, und für alle Builds, wenn AGP 8.1 oder höher (z.B. D8-Version 8.1) verwendet wird. 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
wird veröffentlicht. Version 2.10.0-alpha02 enthält diese Commits.
API-Änderungen
- Es wurde die Möglichkeit hinzugefügt, Trace-Spans über ein konfigurierbares
@RestrictTo
Tracer
inWorkManager
auszugeben. (I17d7f, b/260214125) Configuration.workerCoroutineContext
wurde hinzugefügt, um den Dispatcher zu steuern, in demCoroutineWorker
ausgeführt wird. So lässt sich die Verwendung vonDispatchers.Default
inWorkManager
vollständig vermeiden. (Icd1b7)- Benutzerdefinierte Ausnahmebehandlung für Workers hinzufügen (Ib1b74, b/261190695)
OneTimeWorkRequest.Builder
undPeriodicWorkRequest.Builder
können jetzt mitKClass
anstelle vonClass
erstellt werden:val request = OneTimeWorkRequest.Builder(Worker::class).setConstraints(...).build()
(Ib55f6)- Die Klasse
WorkManager
wurde zu Kotlin migriert. Methoden, dieLiveData
,ListenableFuture
oderFlow
zurückgeben, liefern jetzt korrekte Informationen zur Nullable-Eigenschaft. 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
wird veröffentlicht. Version 2.10.0-alpha01 enthält diese Commits.
Neue Funktionen
- Entwickler können
NetworkRequest
als Einschränkung für einen Worker über die MethodeConstraints.setRequiredNetworkRequest
angeben. So können Sie genauer festlegen, in welchem Netzwerk dieser Worker ausgeführt werden soll.
API-Änderungen
- Es wurde die Möglichkeit hinzugefügt,
NetworkRequest
als Einschränkung anzugeben. (Id98a1, b/280634452)
Version 2.9
Version 2.9.1
7. August 2024
androidx.work:work-*:2.9.1
wird veröffentlicht. Version 2.9.1 enthält diese Commits.
Fehlerkorrekturen
- Ein Absturz wurde behoben, der dadurch verursacht wurde, dass
WorkManager
versucht hat, einen Worker mit langer Laufzeit (d.h. einen Worker im Vordergrund) neu zu starten, wenn der Vordergrundtyp der Arbeit Berechtigungen für Android 14 hatte, die widerrufen wurden. (b/333957914)
Version 2.9.0
29. November 2023
androidx.work:work-*:2.9.0
wird veröffentlicht. Version 2.9.0 enthält diese Commits.
Wichtige Änderungen seit Version 2.8.0
- Beobachtbarkeit über
Flow
. Anstelle vonLiveData
kann der Fortschritt des Workers jetzt über den Flow mitWorkManager.getWorkInfosFlow
und ähnlichen Methoden beobachtet werden. WorkManager
gibt jetzt einen Hinweis darauf, warum ein Worker zuvor angehalten wurde. Sie kann über die MethodegetStopReason()
von einem Worker selbst oder übergetStopReason()
vonWorkInfo
abgefragt werden.- Genaue Planung von periodischen Workern über
setNextScheduleTimeOverride
. So kann der nächste periodische Arbeitsplan dynamisch berechnet werden. Das kann verwendet werden, um erweiterte Funktionen wie adaptive Aktualisierungszeiten, benutzerdefiniertes Wiederholungsverhalten oder das Ausführen eines Newsfeed-Workers jeden Morgen vor dem Aufwachen des Nutzers ohne Drift zu implementieren.ExistingPeriodicWorkPolicy.UPDATE
sollte in Kombination mit diesen Techniken verwendet werden, um zu vermeiden, dass ein aktuell ausgeführter Worker abgebrochen wird, während der nächste geplant wird. - WorkManager-Tests mit Threads, die der Produktion entsprechen.
ExecutorsMode.PRESERVE_EXECUTORS
kann ininitializeTestWorkManager
verwendet werden, um inConfiguration
festgelegte Executors beizubehalten und den echten Hauptthread zu verwenden. - Die Coroutines-APIs wie
CoroutineWorker
wurden vom zusätzlichen Artefakt work-runtime-ktx zum Hauptartefakt work-runtime verschoben. work-runtime-ktx ist jetzt leer.
API-Änderungen
stopReason
wurdeWorkInfo
hinzugefügt. Dadurch iststopReason
nach der Ausführung des Workers verfügbar. Das kann bei der BerichterstellungstopReason
hilfreich sein, da eine App nach dem Beenden eines Workers sehr schnell beendet werden kann. (I21386)- Zulassen, dass
Clock
über die Konfiguration festgelegt und zur Steuerung der Ausführungsreihenfolge von Worker-Tests verwendet wird. (Ic586e) - Der
getStopReason()
-Methode wurdeListenableWorker
hinzugefügt, um einen Hinweis darauf zu geben, warum der Worker angehalten wurde. (I07060) WorkManagerTestInitHelper#closeWorkDatabase()
wurde hinzugefügt, um die Closeguard-Warnung zu geleakten Ressourcen zu vermeiden. (Ia8d49)- Der Konstruktor von
WorkInfo
ist jetzt öffentlich, was beim Testen nützlich sein kann. (Ia00b6, b/209145335) work-runtime-ktx
ist jetzt leer.CoroutineWorker
und andere Kotlin-spezifische Dienstprogramme sind jetzt im Hauptartefakt für die Laufzeit des Work Managers verfügbar. (I71a9a)- Die Methode
setNextScheduleTimeOverride
wurde hinzugefügt, mit der sich periodische Arbeitspläne genau festlegen lassen (I3b4da). getNextScheduleTimeMillis
wurde hinzugefügt, um Informationen zur geplanten Laufzeit abzurufen.WorkInfo
wurde hinzugefügt. (I797e4)WorkInfo
werden Informationen zur anfänglichen Verzögerung und zur Periodizität hinzugefügt. (I52f2f)- Methoden zum Beobachten von Workern über Flows über die Methoden
getWorkInfosByTagFlow
,getWorkInfoByIdFlow
,getWorkInfosForUniqueWorkFlow
,getWorkInfosFlow
hinzugefügt (If122a) - Fehlende
@RequiresApi(...)
-Anmerkungen wurden den Konstruktoren und Properties vonConstraints
hinzugefügt. Sie sind jetzt an entsprechende Anmerkungen zu Settern inConstraints.Builder
angeglichen, die seit frühen Versionen vonWorkManager
vorhanden waren. (I6d7d2) WorkManager
hat jetzt ein separates Limit für Content-URI-Worker, um ihnen garantierte Slots inJobScheduler
zu geben und fehlende Inhaltsaktualisierungen bei hoher Last zu verhindern. Das Limit kann überConfiguration.Builder.setContentUriTriggerWorkersLimit
konfiguriert werden. (Ic128f)WorkInfo
werden Einschränkungen hinzugefügt. (I162c0)
Version 2.9.0-rc01
18. Oktober 2023
androidx.work:work-*:2.9.0-rc01
wird 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
wird veröffentlicht. Version 2.9.0-beta01 enthält diese Commits.
API-Änderungen
- Konstanten für von
WorkInfo.stopReason
undListenableWorker.stopReason
zurü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
wird veröffentlicht. Version 2.9.0-alpha02 enthält diese Commits.
Neue Funktionen
WorkManager
gibt jetzt einen Hinweis darauf, warum ein Worker zuvor angehalten wurde. Sie kann über die MethodegetStopReason()
von einem Worker selbst oder übergetStopReason()
vonWorkInfo
abgefragt werden.
API-Änderungen
stopReason
wurdeWorkInfo
hinzugefügt. Dadurch wirdstopReason
nach der Ausführung des Workers verfügbar. Das könnte bei der BerichterstellungstopReason
hilfreich sein, da eine App sehr schnell beendet werden kann, sobald ein Worker beendet wurde. (I21386)- Die Uhr kann über die Konfiguration eingestellt und zum Steuern der Ausführungsreihenfolge von Worker-Tests verwendet werden. (Ic586e)
- Der
getStopReason()
-Methode wurdeListenableWorker
hinzugefügt, um einen Hinweis darauf zu geben, warum der Worker angehalten wurde. (I07060) WorkManagerTestInitHelper#closeWorkDatabase()
wurde hinzugefügt, um die Closeguard-Warnung zu geleakten Ressourcen zu vermeiden. (Ia8d49)
Fehlerkorrekturen
- Es wurde die Möglichkeit hinzugefügt,
overrideNextScheduleTime
mitTestDriver
zu umgehen, und es wurden Probleme mit der Testbarkeit behoben. (Ic2905)
Version 2.9.0-alpha01
7. Juni 2023
androidx.work:work-*:2.9.0-alpha01
wird veröffentlicht. Version 2.9.0-alpha01 enthält diese Commits.
Neue Funktionen
- Beobachtbarkeit über
Flow
. Anstelle vonLiveData
kann der Fortschritt des Workers jetzt über den Flow mitWorkManager.getWorkInfosFlow
und ähnlichen Methoden beobachtet werden. - Genaue Planung von periodischen Workern über
setNextScheduleTimeOverride
. So kann der nächste periodische Arbeitsplan dynamisch berechnet werden. Das kann verwendet werden, um erweiterte Funktionen wie adaptive Aktualisierungszeiten, benutzerdefiniertes Wiederholungsverhalten oder das Ausführen eines Newsfeed-Workers jeden Morgen vor dem Aufwachen des Nutzers ohne Drift zu implementieren.ExistingPeriodicWorkPolicy.UPDATE
sollte in Kombination mit diesen Techniken verwendet werden, um zu vermeiden, dass ein aktuell ausgeführter Worker abgebrochen wird, während der nächste geplant wird. WorkManager
-Tests mit Threading, das der Produktion entspricht. MitExecutorsMode.PRESERVE_EXECUTORS
können inConfiguration
festgelegte Executors beibehalten und der tatsächliche Hauptthread verwendet werden.- Coroutines-APIs wie
CoroutineWorker
wurden vom zusätzlichen Artefaktwork-runtime-ktx
in das Hauptartefaktwork-runtime
verschoben.work-runtime-ktx
ist jetzt leer.
API-Änderungen
- Der Konstruktor von
WorkInfo
ist jetzt öffentlich. Das kann beim Testen nützlich sein. (Ia00b6, b/209145335) work-runtime-ktx
ist jetzt leer.CoroutineWorker
und andere Kotlin-spezifische Dienstprogramme sind jetzt im Hauptartefaktwork-runtime
verfügbar. (I71a9a)- Die Methode
setNextScheduleTimeOverride
wurde hinzugefügt, mit der sich periodische Arbeitspläne genau festlegen lassen (I3b4da). getEarliestRunTimeMillis
wurde ingetNextScheduleTimeMillis
umbenannt. (I2bd7a)- Informationen zur nächsten geplanten Ausführungszeit werden
WorkInfo
hinzugefügt. (I797e4) WorkInfo
werden Informationen zur anfänglichen Verzögerung und zur Periodizität hinzugefügt. (I52f2f)- Methoden zum Beobachten von Workern über Flows über die Methoden
getWorkInfosByTagFlow
,getWorkInfoByIdFlow
,getWorkInfosForUniqueWorkFlow
,getWorkInfosFlow
hinzugefügt (If122a) - Fehlende
@RequiresApi(...)
-Anmerkungen zu Konstruktoren und Properties von Constraints hinzugefügt. Sie sind jetzt an entsprechende Anmerkungen zu Settern inConstraints.Builder
angeglichen, die seit frühen Versionen vonWorkManager
vorhanden waren. (I6d7d2) WorkManager
hat jetzt ein separates Limit für Content-URI-Worker, um ihnen garantierte Slots inJobScheduler
zu geben und fehlende Inhaltsaktualisierungen bei hoher Last zu verhindern. Das Limit kann überConfiguration.Builder.setContentUriTriggerWorkersLimit
konfiguriert werden. (Ic128f)WorkInfo
werden Einschränkungen hinzugefügt. (I162c0)
Version 2.8
Version 2.8.1
22. März 2023
androidx.work:work-*:2.8.1
wird veröffentlicht. Version 2.8.1 enthält diese Commits.
Fehlerkorrekturen
- Ein ANR-Fehler in
RescheduleReceiver
wurde behoben. Zuvor wurden zwei gleichzeitige Broadcasts nicht richtig verarbeitet. (b/236906724)
Version 2.8.0
8. Februar 2023
androidx.work:work-*:2.8.0
wird 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,
WorkRequests
auf 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.updateWork
undExistingPeriodicWorkPolicy.UPDATE
.
API-Änderungen
WorkManager.updateWork
wurde hinzugefügt, um die Arbeit zu aktualisieren und dabei die ursprüngliche Enqueue-Zeit und Verkettung beizubehalten.(I9a248, b/219446409)ExistingPeriodicWorkPolicy.UPDATE
wurde hinzugefügt. Mit dieser Richtlinie kann ein periodisches 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.REPLACE
wurde eingestellt, um Verwechslungen mitREPLACE
undUPDATE
zu vermeiden, die sehr ähnlich klingen. Wenn Sie die bisherige Semantik vonREPLACE
beibehalten möchten, können Sie die neu hinzugefügte FunktionCANCEL_AND_REENQUEUE
verwenden, die mitREPLACE
identisch ist. (I985ed, b/219446409)- Es wurde die Möglichkeit hinzugefügt, Planungsfehler abzufangen, indem
Consumer<Throwable>
über setSchedulingExceptionHandler bereitgestellt wird. - Es wurde die Möglichkeit hinzugefügt,
Consumer<Throwable>
über setInitializationExceptionHandler bereitzustellen, um festzustellen, ob beim Initialisieren von WorkManager Probleme aufgetreten sind. - Inline-Hilfen für
OneTimeWorkRequest
undPeriodicWorkRequest
wurden vonandroidx.work:work-runtime-ktx
nachandroidx.work:work-runtime
verschoben (I0010f, b/209145335) - Die Hilfsmethoden
WorkQuery.fromIds
,WorkQuery.fromStates
,WorkQuery.fromUniqueWorkNames
undWorkQuery.fromTags
wurden hinzugefügt, umWorkQuery
direkt zu erstellen. (b/199919736) (If48f2, b/199919736) getForegroundInfo
wurde zuWorker
hinzugefügt. (Ic1ead)RxWorker
sowohl für RxJava 2 als auch für RxJava 3 hat jetztsetForeground
, dasCompletable
zurückgibt und anstelle vonsetForegroundInfoAsync
verwendet werden kann, dasListenableFuture
zurückgibt.RxWorker
sowohl für RxJava 2 als auch für RxJava 3 gibtgetForegroundInfo
zurück, dasSingle
zurückgibt und anstelle vongetForegroundInfoAsync
verwendet werden kann, dasListenableFuture
zurückgibt. (b/203851459)- Einschränkungen können jetzt direkt erstellt werden, anstatt
Constraints.Builder
zu verwenden. Das ist für Kotlin-Nutzer praktisch. (Idc390, b/137568653) - Es wurde die Möglichkeit hinzugefügt, zu prüfen, ob
WorkManager
initialisiert wurde. Außerdem wurde eine neuegetConfiguration()
API für Bibliotheksentwickler hinzugefügt, mit der die Konfiguration abgerufen werden kann, mit derWorkManager
initialisiert wurde. (I6eff3, b/212300336)
Fehlerkorrekturen
- Ein Problem mit dem Greedy-Scheduler wurde behoben, das verhinderte, dass Worker unter Last sofort ausgeführt wurden. (I9686b, b/248111307)
@RequiresPermission
wurde APIs hinzugefügt, für die die BerechtigungPOST_NOTIFICATIONS
für SDK 33 und höher erteilt werden muss. (Ie542e, b/238790278)- Stornierungen in
CoroutineScope
anListenableFuture
weitergeben, wennsuspendCancellableCoroutine
verwendet wird.
Version 2.8.0-rc01
7. Dezember 2022
androidx.work:work-*:2.8.0-rc01
wird veröffentlicht. Version 2.8.0-rc01 enthält diese Commits.
Neue Funktionen
- In diesem Release gibt es keine neuen Funktionen. Dies ist hauptsächlich eine Versionsaktualisierung.
Version 2.8.0-beta02
9. November 2022
androidx.work:work-*:2.8.0-beta02
wird veröffentlicht. Version 2.8.0-beta02 enthält diese Commits.
Fehlerkorrekturen
- Die Methode
equals
inWorkInfo
wurde korrigiert. Bisher wurden Informationen zur neuen Generation nicht berücksichtigt. (4977cc)
Version 2.8.0-beta01
5. Oktober 2022
androidx.work:work-*:2.8.0-beta01
wird veröffentlicht. Version 2.8.0-beta01 enthält diese Commits.
Fehlerkorrekturen
- Ein Problem mit dem Greedy-Scheduler wurde behoben, das verhinderte, dass Worker unter Last sofort ausgeführt wurden. (I9686b, b/248111307)
Version 2.8.0-alpha04
7. September 2022
androidx.work:work-*:2.8.0-alpha04
wird veröffentlicht. Version 2.8.0-alpha04 enthält diese Commits.
API-Änderungen
WorkerInfo.getGeneration()
undWorkerParameters.getGeneration()
wurden hinzugefügt, um die Generierung eines Workers zurückzugeben. Ein Worker hat mehrere Generationen, wenn er überWorkManager.updateWork
oderWorkManager.enqueueUniquePeriodicWork
mitExistingPeriodicWorkPolicy.UPDATE
aktualisiert wurde. Hinweis: Wenn der Worker gerade ausgeführt wird, kann diese Methode eine neuere Generation als die des aktuell ausgeführten Workers zurückgeben, wenn während der Ausführung des Workers ein Update erfolgt ist. (I665c5, b/219446409) (I128a9, b/219446409)InitializationExceptionHandler
wurde hinzugefügt, ein Exception-Handler, mit dem sich feststellen lässt, ob beim Initialisieren vonWorkManager
Probleme aufgetreten sind. (I061de)
Version 2.8.0-alpha03
10. August 2022
androidx.work:work-*:2.8.0-alpha03
wird veröffentlicht. Version 2.8.0-alpha03 enthält diese Commits.
Neue Funktionen
- Es wurde die Möglichkeit hinzugefügt,
WorkRequests
auf nicht aufdringliche Weise zu aktualisieren, wobei die ursprüngliche Enqueue-Zeit, Verkettung usw. beibehalten werden. Weitere Informationen finden Sie unterWorkManager.updateWork
undExistingPeriodicWorkPolicy.UPDATE
.
API-Änderungen
WorkManager.updateWork
wurde hinzugefügt, um die Arbeit zu aktualisieren und dabei die ursprüngliche Enqueue-Zeit und Verkettung beizubehalten.(I9a248, b/219446409)ExistingPeriodicWorkPolicy.UPDATE
wurde hinzugefügt. Mit dieser Richtlinie kann ein periodisches 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.REPLACE
wurde eingestellt, um Verwechslungen mitREPLACE
undUPDATE
zu vermeiden, die sehr ähnlich benannt sind. Wenn Sie die bisherige Semantik vonREPLACE
beibehalten möchten, können Sie die neu hinzugefügte FunktionCANCEL_AND_REENQUEUE
verwenden, die mitREPLACE
identisch ist. (I985ed, b/219446409)- Es wurde die Möglichkeit hinzugefügt, Terminplanungs-Ausnahmen abzufangen, indem ein
SchedulingExceptionHandler
definiert wird. (I033eb) - Inline-Hilfen für
OneTimeWorkRequest
undPeriodicWorkRequest
wurden vonandroidx.work:work-runtime-ktx
nachandroidx.work:work-runtime
verschoben (I0010f, b/209145335)
Fehlerkorrekturen
@RequiresPermission
wurde APIs hinzugefügt, für die die Berechtigung POST_NOTIFICATIONS für SDK 33 und höher erteilt werden muss. (Ie542e, b/238790278)
Version 2.8.0-alpha02
6. April 2022
androidx.work:work-*:2.8.0-alpha02
wird veröffentlicht. Version 2.8.0-alpha02 enthält diese Commits.
API-Änderungen
- Einschränkungen können jetzt direkt erstellt werden, anstatt den Builder zu verwenden. Das ist für Kotlin-Nutzer praktisch. (Idc390, b/137568653)
- Es wurde die Möglichkeit hinzugefügt, zu prüfen, ob
WorkManager
initialisiert wurde. Außerdem wurde eine neuegetConfiguration()
API für Bibliotheksentwickler hinzugefügt, mit der die Konfiguration abgerufen werden kann, mit derWorkManager
initialisiert wurde. (I6eff3, b/212300336)
Version 2.8.0-alpha01
12. Januar 2022
androidx.work:work-*:2.8.0-alpha01
wird veröffentlicht. Version 2.8.0-alpha01 enthält diese Commits.
API-Änderungen
- Es wurden Hilfsmethoden
WorkQuery.fromStates
,WorkQuery.fromUniqueWorkNames
undWorkQuery.fromTags
hinzugefügt, um WorkQuery direkt zu erstellen. (If48f2, b/199919736) - Es wurden experimentelle BuildCompat-Methoden für zukünftige SDKs hinzugefügt (Iafd82, b/207528937).
- Fügen Sie
getForegroundInfo
zuWorker
hinzu. (Ic1ead) - Es wurden Hilfsmethoden
WorkQuery.fromIds
zum direkten Erstellen von WorkQuery aus IDs hinzugefügt. (Ie5bdf, b/199919736) - RxWorker hat jetzt
setForeground
, dasCompletable
zurückgibt und anstelle vonsetForegroundInfoAsync
verwendet werden kann, dasListenableFuture
zurückgibt. (I85156) - RxWorker für RxJava 2 gibt jetzt
getForegroundInfo
zurück, dasSingle
zurückgibt und anstelle vongetForegroundInfoAsync
verwendet werden kann, dasListenableFuture
zurückgibt. (I21c91, b/203851459) - RxWorker für RxJava 3 hat jetzt
getForegroundInfo
, dasSingle
zurückgibt und anstelle vongetForegroundInfoAsync
verwendet werden kann, dasListenableFuture
zurückgibt. (I1ca8a) - RxWorker hat jetzt
setForeground
, dasCompletable
zurückgibt und anstelle vonsetForegroundInfoAsync
verwendet werden kann, dasListenableFuture
zurückgibt. (I992a3, b/203851459)
Fehlerkorrekturen
- Stornierungen in
CoroutineScope
anListenableFuture
weitergeben, wennsuspendCancellableCoroutine
verwendet wird. (I77e63)
Version 2.7
Version 2.7.1
17. November 2021
androidx.work:work-*:2.7.1
wird veröffentlicht. Version 2.7.1 enthält diese Commits.
Fehlerkorrekturen
- Kündigungen im
CoroutineScope
werden bei Verwendung vonsuspendCancellableCoroutine
an dasListenableFuture
weitergegeben. (I77e63) - Eine Ausnahme wird sofort ausgelöst, wenn verzögerte Arbeitsanfragen als beschleunigt markiert werden. bef1762
Version 2.7.0
13. Oktober 2021
androidx.work:work-*:2.7.0
wird 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. Für frühere Android-Versionen wird durch die Delegation an einen Dienst im Vordergrund Abwärtskompatibilität geboten.
Version 2.7.0-rc01
29. September 2021
androidx.work:work-*:2.7.0-rc01
wird 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
wird veröffentlicht. Version 2.7.0-beta01 enthält diese Commits.
Neue Funktionen
- Reduzierung von SQLite-Konflikten in mehreren Prozessen bei der Initialisierung von WorkManager.
API-Änderungen
- Entfernen Sie
@ExperimentalExpeditedWork
APIs, da die zugrunde liegenden Plattform-APIs für Android 12 (S) stabil sind. (aosp/1792806)
Fehlerkorrekturen
- Eine bessere Fehlermeldung für Mitarbeiter, die
getForegroundInfoAsync()
nicht implementieren. (aosp/1809376)
Version 2.7.0-alpha05
21. Juli 2021
androidx.work:work-*:2.7.0-alpha05
wird veröffentlicht. Version 2.7.0-alpha05 enthält diese Commits.
Diese Version enthält auch Fehlerkorrekturen aus der WorkManager-Version 2.6.0-beta02
.
Version 2.7.0-alpha04
2. Juni 2021
androidx.work:work-*:2.7.0-alpha04
wird veröffentlicht.
Diese Version enthält auch die Änderungen aus der Version 2.6.0-beta01.
API-Änderungen
ListenableWorker.setForegroundAsync()
ist nicht mehr eingestellt.- 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
wird 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 wurde einRemoteCoroutineWorker
hinzugefü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) - Aus WorkManager
2.6.0-alpha02
:Unterstützung von Worker-Prozessen fürsetProgressAsync()
. (Ib6d08) - Über WorkManager
2.6.0-alpha02
:Machen SieWorkManagerInitializer
öffentlich, damit andereandroidx.startup.Initializer
s sie als Abhängigkeiten verwenden können. (I5ab11)
Version 2.7.0-alpha02
10. März 2021
androidx.work:work-*:2.7.0-alpha02
wird veröffentlicht. Version 2.7.0-alpha02 enthält diese Commits.
Fehlerkorrekturen
- Die Veränderlichkeit von
PendingIntent
wird explizit angegeben, 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
wird 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 lang andauernde Aufgaben, die zuvor an den Lebenszyklus eines Dienstes im Vordergrund gebunden waren, besser zu unterstützen, können Anwendungen
WorkRequest
als beschleunigt markieren.Diese API ersetzt die APIs
setForegroundAsync(...)
/setForeground(...)
, die jetzt eingestellt wurden.Bei Verwendung von
setExpedited(...)
delegiert WorkManager ab Android 12 an beschleunigte Jobs inJobScheduler
. 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
WorkRequest
s hinzugefügt.
Version 2.6.0
Version 2.6.0
1. September 2021
androidx.work:work-*:2.6.0
wird 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, umContentProvider
zu initialisieren, müssen Sie stattdessen Folgendes tun.<provider android:name="androidx.startup.InitializationProvider" android:authorities=\"${applicationId}.androidx-startup" android:exported="false" tools:node=\"merge"> <!-- If you are using androidx.startup to initialize other components --> <meta-data android:name="androidx.work.WorkManagerInitializer" android:value="androidx.startup" tools:node="remove" /> </provider>
<!-- If you want to disable android.startup completely. --> <provider android:name="androidx.startup.InitializationProvider" android:authorities="${applicationId}.androidx-startup" tools:node="remove" />
Unterstützung für Worker, die in einem beliebigen Prozess ausgeführt werden können. (Iaf200)
Es wurde ein
RemoteCoroutineWorker
hinzugefügt, eine Implementierung von RemoteListenableWorker, die an einen Remote-Prozess gebunden werden kann. (I30578)
Version 2.6.0-rc01
4. August 2021
androidx.work:work-*:2.6.0-rc01
wird 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
wird veröffentlicht. Version 2.6.0-beta02 enthält diese Commits.
Fehlerkorrekturen
RemoteWorkManager
wird jetzt korrekt vonRemoteWorkManagerService
entbunden, sodassRemoteWorkManagerService
korrekt bereinigt werden kann. aosp/1730694RemoteListenableWorker
wird jetzt korrekt vonRemoteWorkerService
getrennt, sodassRemoteWorkerService
korrekt bereinigt werden kann. aosp/1743817ForceStopRunnable
wird jetzt nur noch im primären App-Prozess ausgeführt. Dies ist eine Optimierung, die Ressourcenkonflikte für Apps mit mehreren Prozessen vermeidet. aosp/1749180, aosp/1761729
Version 2.6.0-beta01
2. Juni 2021
androidx.work:work-*:2.6.0-beta01
wird veröffentlicht. Version 2.6.0-beta01 enthält diese Commits.
Diese Version enthält einige kleinere Verbesserungen an 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
wird 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, wurde hinzugefügt. (Iaf200)
Es wurde ein
RemoteCoroutineWorker
hinzugefügt, das eine Implementierung vonRemoteListenableWorker
ist, die an einen Remote-Prozess gebunden werden kann. (I30578)
API-Änderungen
- Unterstützung für die Netzwerkbeschränkung
TEMPORARILY_UNMETERED
hinzugefügt. (I08d5e) - Unterstützung von Worker-Prozessen für
setProgressAsync()
. (Ib6d08) - Machen Sie
WorkManagerInitializer
öffentlich, damit andereandroidx.startup.Initializer
s sie als Abhängigkeiten verwenden können. (I5ab11)
Version 2.6.0-alpha01
24. März 2021
androidx.work:work-*:2.6.0-alpha01
wird veröffentlicht. Version 2.6.0-alpha01 enthält diese Commits.
Neue Funktionen
WorkManager
verwendet jetztandroidx.startup
, um WorkManager zu initialisieren. Bisher wurde dies vonandroidx.work.impl.WorkManagerInitializer
erledigt. (aosp/1608813)Wenn Sie
tools:node="remove"
in der Vergangenheit zum Initialisieren des Prozesslebenszyklus verwendet haben, müssen Sie stattdessen Folgendes tun.ContentProvider
<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 dieoutputData
des ListenableWorker zurückgibt. (Ie51e3)
Fehlerkorrekturen
- Es wurde eine Problemumgehung für einen OEM-Fehler hinzugefügt, der dazu führt, dass bei Verwendung der
AlarmManager
-APIs einSecurityException
ausgelöst wird. (aosp/1587518)
Version 2.5.0
Version 2.5.0
27. Januar 2021
androidx.work:work-*:2.5.0
wird veröffentlicht. Version 2.5.0 enthält diese Commits.
Wichtige Änderungen seit Version 2.4.0
- Ein neues
:work:work-multiprocess
-Artefakt für Apps, die mehrere Prozesse verwenden. Dadurch wird die Leistung verbessert, da die Planung von Arbeitsanfragen in einem einzigen Prozess zusammengefasst wird.- Wenn Sie
work-multiprocess
verwenden möchten, definieren Sie eine Abhängigkeit von:implementation "androidx.work:work-multiprocess:2.5.0"
- Legen Sie mit Configuration.Builder.setDefaultProcessName(String) einen primären Prozess fest.
- Wenn Sie
work-multiprocess
verwenden, sollten Sie auch RemoteWorkManager verwenden, um IhreWorkRequest
s zu verwalten. RemoteWorkManager kontaktiert immer den zugewiesenen Prozess. Der In-Process-Scheduler wird ebenfalls im dafür vorgesehenen Prozess ausgeführt.
- Wenn Sie
- Manchmal kann
ActivityManager
dieJobService
-Instanz nicht instanziieren, um einen Job zu starten. Dies führt dazu, dass der zugrunde liegende Job aufgrund eines Plattformfehlers ohne Benachrichtigung gelöscht wird.WorkManager
sorgt jetzt dafür, dass es Sicherungsjobs für jede einzelneWorkRequest
gibt, wenn eineApplication
durch Abgleichsjobs initialisiert wird. Dies verbessert die Zuverlässigkeit der Jobausführung erheblich. (b/172475041, aosp/1489577) WorkManager
begrenzt das Datenbankwachstum, indem die Pufferdauer reduziert wird, in derWorkRequest
nach Abschluss einesWorkRequest
erfasst werden. Die Dauer betrug zuvor7
Tage. Sie wurde auf1
Tag + die Dauer von keepResultsForAtLeast reduziert. (aosp/1419708)- Die
TestListenableWorkerBuilder
unterstützt jetzt die reifizierte Klasse, dieListenableWorker
erweitert, um das Testen zu vereinfachen. (aosp/1443299, b/169787349) - Der WorkManager-Inspector ist jetzt verfügbar, wenn Sie Android Studio Arctic Fox verwenden.
Version 2.5.0-rc01
13. Januar 2021
androidx.work:work-*:2.5.0-rc01
wird veröffentlicht. Version 2.5.0-rc01 enthält diese Commits.
Fehlerkorrekturen
- Ein Fehler wurde behoben, bei dem
getWorkInfosLiveData
nach der Aktualisierung von Einheiten bei Verwendung 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. Dies führt auf einigen Motorola-Geräten zu Problemen. (aosp/1535368, b/175944460)
- Ein Fehler wurde behoben, durch den
NoSuchElementException
s ignoriert wurden, wenn versucht wurde, die Bindung an einen beendeten Prozess aufzuheben. (aosp/1530589) - Verbessere
ConstraintTrackingWorker
so, dass nur einListenableWorker
beendet wird, wenn es noch nicht beendet wurde. (aosp/1496844, b/172946965) - androidx.work-Bibliotheken für Java 8 aktualisieren (Ibd2f2)
Version 2.5.0-beta02
2. Dezember 2020
androidx.work:work-*:2.5.0-beta02
wird veröffentlicht. Version 2.5.0-beta02 enthält diese Commits.
Fehlerkorrekturen
- Ein Fehler in
androidx.work:work-multiprocess
wurde behoben, bei dem WorkManager den aufrufenden Thread versehentlich blockierte, als versucht wurde, eine Verbindung zum angegebenen Prozess herzustellen. (aosp/1475538) - Ein Fehler wurde behoben, bei dem
PeriodicWorkRequest
nicht richtig abgeglichen wurden. (b/172475041, aosp/1489577) - Es wurde eine Problemumgehung für einen Plattformfehler beim Beenden des Vordergrunddienstes 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
wird veröffentlicht. Version 2.5.0-beta01 enthält diese Commits.
Neue Funktionen
WorkManager
drosselt automatisch die Anzahl derWorkRequest
s, die vom In-Process-Scheduler aufgenommen werden können. Die Anfragen werden weiterhin in der Reihenfolge ihres Eingangs ausgeführt. (aosp/1455228)WorkManager
versucht, die Daten wiederherzustellen, wenn sich der Datenspeicher der Anwendung in einem fehlerhaften Zustand befindet. (aosp/1463103)
Fehlerkorrekturen
- Wenn
ListenableWorker
unterbrochen werden, markieren Sie sie sofort 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
wird veröffentlicht. Version 2.5.0-alpha03 enthält diese Commits.
API-Änderungen
TestListenableWorkerBuilder
undTestWorkerBuilder
verwenden keine Raw-Typen. (I883ad, b/169787349)
Fehlerkorrekturen
- Verwenden Sie
ApplicationInfo
, um den Namen des Standard-App-Prozesses zu ermitteln. (b/168716641, aosp/1429950) - Korrigieren Sie die Sichtbarkeitsregeln für
RemoteWorkManager
undRemoteWorkContinuation
. Diese APIs sind nicht mehr als@Restricted
markiert. (aosp/1432091) - Korrigieren Sie die ProGuard-Regeln für
:work:work-multiprocess
. (aosp/1432091) - Benachrichtigungslebenszyklen für lang andauernde Aufgaben, die an einen Vordergrunddienst gebunden sind, werden verbessert. (b/168502234, aosp/1431331)
Version 2.5.0-alpha02
16. September 2020
androidx.work:work-*:2.5.0-alpha02
wird veröffentlicht. Version 2.5.0-alpha02 enthält diese Commits.
Neue Funktionen
- Fügen Sie WorkQuery eine API hinzu, damit Sie
id
s abfragen können.WorkInfo
(aosp/1412372, b/157335295) - WorkManager unterstützt Apps, die mehrere Prozesse verwenden, jetzt besser mit einem neuen Artefakt (
androidx.work:work-multiprocess:*
). Dieses neue Artefakt hilft, einige Probleme zu lösen, die bei großen Apps auftreten, darunter:- WorkManager muss in der Regel in jedem App-Prozess initialisiert werden. Das ist nicht optimal, da es zu mehr SQLite-Konflikten kommt, was wiederum andere Probleme verursacht. WorkManager bietet jetzt neue APIs, mit denen Sie mit
Configuration#setDefaultProcessName(processName)
einen primären App-Prozess festlegen können.processName
ist ein vollständig qualifizierter Prozessname, der wiepackageName:processName
aussieht (z.B.com.example:remote
). - Eine Reihe neuer APIs:
RemoteWorkManager
undRemoteWorkContinuation
bisenqueue
,cancel
undquery
-Arbeitsanfragen. Diese APIs enthalten keineLiveData
-Varianten, um SQLite-Konflikte zwischen mehreren Prozessen zu vermeiden. Alle Aufrufe vonenqueue
,cancel
undquery
werden mithilfe von AIDL an einenprimary
-App-Prozess weitergeleitet und geben einen flüssigenListenableFuture
zurü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
WorkRequest
s ohne unvollständige Abhängigkeiten aggressiver. Die Pufferdauer wurde von7
Tagen auf1
Tag geändert. (aosp/1419708)
Fehlerkorrekturen
- WorkManager gleicht Jobs jetzt proaktiv ab, sodass
WorkRequest
- undJobScheduler
-Jobs synchronisiert werden, wennWorkManager
initialisiert wird. (aosp/1412794, b/166292069)
Version 2.5.0-alpha01
19. August 2020
androidx.work:work-*:2.5.0-alpha01
wird veröffentlicht. Version 2.5.0-alpha01 enthält diese Commits.
Neue Funktionen
- Änderungen an internen APIs, die es uns ermöglichen, in Zukunft bessere Tools mit
WorkManager
bereitzustellen. Wir halten Sie auf dem Laufenden.
Fehlerkorrekturen
- Behandlung von
SecurityException
beim Erfassen des Netzwerkstatus auf einigen Geräten. (aosp/1396969)
Externe Beiträge
- Dokumentation für
ArrayCreatingInputMerger
von Zac Sweers (github/43) korrigiert.
Version 2.4.0
Version 2.4.0
22. Juli 2020
androidx.work:work-*:2.4.0
wird veröffentlicht. Version 2.4.0 enthält diese Commits.
Wichtige Änderungen seit Version 2.3.0
- Der In-Process-Scheduler von
WorkManager
ist jetzt leistungsfähiger. Bisher wurden bei der In-Process-Scheduler
nur Arbeiten ausgeführt, die nicht verzögert wurden und deren Einschränkungen erfüllt waren. Der In-Process-Scheduler verfolgt jetztWorkRequest
, die in Zukunft ausgeführt werden könnten, einschließlich PeriodicWorkRequests. Das In-Process-Scheduler
unterliegt auch keinen Planungsbeschränkungen, ist aber weiterhin auf die Größe des von WorkManager verwendetenExecutor
beschränkt. Das bedeutet, dass die App jetzt viel mehr WorkRequests ausführen kann, wenn sie im Vordergrund ist. Zur Verwaltung der Ausführung verzögerter Aufgaben im Vordergrund wird inWorkManager
auch ein neues konfigurierbaresRunnableScheduler
eingeführt. (aosp/1185778) - WorkManager unterstützt jetzt RxJava 3. Wenn Sie RxJava 3 verwenden möchten, müssen Sie die folgende Abhängigkeit einfügen:
implementation "androidx.work:work-rxjava3:2.4.0"
. (aosp/1277904) - Es ist jetzt möglich,
WorkInfo
s mit einemWorkQuery
abzufragen. Das ist nützlich, wenn EntwicklerWorkInfo
s 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
WorkManager
anzufordern, indem Sie Folgendes verwenden:adb shell am broadcast -a "androidx.work.diagnostics.REQUEST_DIAGNOSTICS" -p "<your_app_package_name>"
Daraus lassen sich viele nützliche Informationen ableiten, darunter:
- WorkRequests, die in den letzten 24 Stunden abgeschlossen wurden.
- WorkRequests, die derzeit ausgeführt werden.
- Geplante Arbeitsanfragen. (aosp/1235501)
Fügen Sie
ExistingWorkPolicy.APPEND_OR_REPLACE
hinzu. Das ist ähnlich wieAPPEND
, ersetzt aber eine Kette, bei der die Voraussetzungen abgebrochen oder fehlgeschlagen sind. (b/134613984, aosp/1199640)Es ist möglich, ein benutzerdefiniertes
RunnableScheduler
hinzuzufügen, um WorkRequests zu verfolgen, die in Zukunft ausgeführt werden müssen. Dies wird vom In-Process-Scheduler verwendet. (aosp/1203944)Unterstützung für das dynamische Hinzufügen von Factories zum Delegieren bei Verwendung von
DelegatingWorkerFactory
hinzugefügt. (b/156289105, aosp/1309745)Das Tracking für
BATTERY_NOT_LOW
-Einschränkungen wird besser an die Plattform angepasst. (aosp/1312583)Der In-Process-Scheduler verwendet jetzt bessere APIs, um den Namen des Prozesses zu ermitteln. Dies ist nützlich, um Apps mit mehreren Prozessen besser zu unterstützen. (aosp/1324732)
Neue Lint-Regeln, die Folgendes erzwingen:
- Verwendung der richtigen
foregroundServiceType
bei Verwendung vonsetForegroundAsync()
-APIs. (b/147873061, aosp/1215915) - Geben Sie JobScheduler-IDs an, 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 jetztpublic
sind, wenn die Standard-WorkerFactory
verwendet wird. (aosp/1291262)
- Verwendung der richtigen
Aufrufe von
setForegroundAsync()
, die nicht vor Abschluss einesListenableWorker
abgeschlossen werden, werden jetzt über einIllegalStateException
im zurückgegebenenListenableFuture
signalisiert. (aosp/1262743)Ein Fehler wurde behoben, durch den die
ForegroundService
nicht beendet wurde, nachdem eineWorker
im Vordergrund unterbrochen wurde. (b/155579898, aosp/1302153)Ein Fehler wurde behoben, bei dem
WorkManager
versucht, mehrere Instanzen vonWorker
auszuführen, die an einen Vordergrunddienst gebunden sind (b/156310133, aosp/1309853).
Version 2.4.0-rc01
24. Juni 2020
androidx.work:work-*:2.4.0-rc01
wird 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. Dies ist nützlich, um Apps mit mehreren Prozessen 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
- Ein Fehler wurde behoben, durch den die
ForegroundService
nicht beendet wurde, nachdem eineWorker
im Vordergrund unterbrochen wurde. (b/155579898, aosp/1302153) - Ein Fehler wurde behoben, bei dem
WorkManager
versucht, mehrere Instanzen vonWorker
auszuführen, die an einen Vordergrunddienst gebunden sind (b/156310133, aosp/1309853). - Unterstützung für das dynamische Hinzufügen von Factories zum Delegieren bei Verwendung von
DelegatingWorkerFactory
hinzugefügt. (b/156289105, aosp/1309745) - Das Tracking für
BATTERY_NOT_LOW
-Einschränkungen wird besser an die Plattform angepasst. (aosp/1312583)
Version 2.4.0-alpha03
29. April 2020
androidx.work:work-*:2.4.0-alpha03
wird 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 jetztpublic
sind, wenn die Standard-WorkerFactory
verwendet wird. (aosp/1291262)
API-Änderungen
- Wenn Sie
setProgressAsync()
aufrufen, nachdem die Ausführung einesListenableWorker
abgeschlossen ist, wird jetzt überListenableFuture
einException
signalisiert. (aosp/1285494) WorkQuery.Builder
ist jetzt mitfinal
gekennzeichnet. (aosp/1275037)- Die
WorkQuery.Builder
-Factory-MethodenwithStates
,withTags
undwithUniqueWorkNames
wurden infromStates
,fromTags
undfromUniqueWorkNames
umbenannt. (aosp/1280287)
Fehlerkorrekturen
- Ignoriere
SecurityException
s beim Erfassen des Netzwerkstatus eines Geräts. (b/153246136, aosp/1280813)
Version 2.4.0-alpha02
1. April 2020
androidx.work:work-*:2.4.0-alpha02
wird veröffentlicht. Version 2.4.0-alpha02 enthält diese Commits.
Neue Funktionen
- Es wurde eine neue Lint-Regel hinzugefügt, die warnt, wenn für
WorkRequest
sowohlConstraints.setRequiresCharging(...)
als auchConstraints.setRequiresDeviceIdle(...)
erforderlich sind. Einige Geräte werden nie gleichzeitig geladen und sind im Leerlauf. Solche Anfragen würden also seltener als erwartet ausgeführt. (aosp/1253840)
API-Änderungen
Es ist jetzt möglich,
WorkInfo
s mit einemWorkQuery
abzufragen. Das ist nützlich, wenn EntwicklerWorkInfo
s 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 einesListenableWorker
abgeschlossen werden, werden jetzt über einIllegalStateException
im zurückgegebenenListenableFuture
signalisiert. (aosp/1262743)
Fehlerkorrekturen
- Die Lint-Regel, mit der nach ungültigen Intervallzeiträumen für
PeriodicWorkRequest
s gesucht wird, wurde korrigiert. (aosp/1254846, b/152606442)
Version 2.4.0-alpha01
4. März 2020
androidx.work:work-*:2.4.0-alpha01
wird veröffentlicht. Version 2.4.0-alpha01 enthält diese Commits.
Neue Funktionen
Der In-Process-Scheduler von
WorkManager
ist jetzt leistungsfähiger. Bisher hat der In-Process-Scheduler nur Arbeit berücksichtigt, die nicht verzögert wurde 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 beachtet auch keine Planungsbeschränkungen (ist aber weiterhin auf die Größe des von WorkManager verwendetenExecutor
beschränkt). Das bedeutet, dass die Anwendung jetzt viel mehrWorkRequest
s 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. Daraus lassen sich viele nützliche Informationen ableiten, 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 der richtigen
foregroundServiceType
bei Verwendung vonsetForegroundAsync()
-APIs. (b/147873061, aosp/1215915) - Gibt
JobScheduler
-IDs an, dieWorkManager
bei der direkten Verwendung vonJobService
-APIs verwenden soll. (aosp/1223567)
- Verwendung der richtigen
API-Änderungen
Fügen Sie
ExistingWorkPolicy.APPEND_OR_REPLACE
hinzu. Das ist ähnlich wieAPPEND
, aber ersetzt eine Kette, bei der Voraussetzungen abgebrochen oder nicht erfüllt wurden. (b/134613984, aosp/1199640)Es soll möglich sein, ein benutzerdefiniertes
RunnableScheduler
hinzuzufügen, umWorkRequest
zu erfassen, die in Zukunft ausgeführt werden müssen. Dies wird vom In-Process-Scheduler verwendet. (aosp/1203944)
Fehlerkorrekturen
setProgress()
inRxWorker
wurde eingestellt, da zuvor einSingle<Void>
zurückgegeben wurde, was ein unmöglicher Typ ist. Eine neue APIsetCompletableProgress()
wurde hinzugefügt, die stattdessenCompletable
zurückgibt. Außerdem wurden neue Lint-Regeln hinzugefügt, 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
wird veröffentlicht. Version 2.3.4 enthält diese Commits.
Fehlerkorrekturen
- Ein Fehler wurde behoben, der dazu führte, dass mehrere Instanzen eines lang andauernden
Worker
ausgeführt wurden, nachdem das Ausführungsfenster von 10 Minuten überschritten wurde. (aosp/1247484, b/150553353) - Korrektur für den Lint-Fehler
IssueRegistry
von WorkManager. Vielen Dank an @ZacSweers von Slack für den Beitrag. (aosp/1217923)
Version 2.3.3
Version 2.3.3
4. März 2020
androidx.work:work-*:2.3.3
wird veröffentlicht. Version 2.3.3 enthält diese Commits.
Fehlerkorrekturen
- Ein Fehler wurde behoben, bei dem eine unterbrochene
Worker
nicht richtig neu geplant wurde. (b/150325687, aosp/1246571)
Version 2.3.2
Version 2.3.2
19. Februar 2020
androidx.work:work-*:2.3.2
werden veröffentlicht. Version 2.3.2 enthält diese Commits.
Fehlerkorrekturen
- Ein Problem wurde behoben, bei dem WorkManager in seltenen Fällen das Limit von 100 Jobs in JobScheduler überschritt. (aosp/1226859, b/149092520)
- Behebung einer Race-Bedingung in ConstraintControllers. (aosp/1220100)
- Der Lebenszyklus von Vordergrunddiensten für lang andauernde Worker 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
wird veröffentlicht. Version 2.3.1 enthält diese Commits.
Fehlerkorrekturen
- Den Lebenszyklus von
Notification
s für lang andauerndeWorker
s, die ausgeführt werden, wenn einService
im Vordergrund aktiv ist, besser verwalten. (aosp/1218539, b/147249312) WorkManager
ist jetzt vonandroidx.sqlite:sqlite-framework:2.1.0
Stable abhängig. (aosp/1217729)- Es wurden Lint-Regeln hinzugefügt, um sicherzustellen, dass ein
foregroundServiceType
imAndroidManifest.xml
angegeben ist, wennforegroundServiceType
s inForegroundInfo
verwendet werden. (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
wird veröffentlicht. Version 2.3.0-rc01 enthält diese Commits.
Dieser Release ist identisch mit 2.3.0-beta02
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
wird veröffentlicht. Version 2.3.0-beta02 enthält diese Commits.
Neue Funktionen
- Es wurde eine bessere Fehlermeldung für nicht behebungsfähige SQLite-Ausnahmen hinzugefügt. (aosp/1185777)
- Es wurde eine Lint-Regel hinzugefügt, die dafür sorgt, dass der Content-Provider
androidx.work.impl.WorkManagerInitializer
ausAndroidManifest.xml
entfernt wird, wenn die On-Demand-Initialisierung verwendet wird. (aosp/1167007) - Es wurde eine Lint-Warnung hinzugefügt, wenn
enqueue()
für einPeriodicWorkRequest
anstelle vonenqueueUniquePeriodicWork()
verwendet wird. (aosp/1166032)
API-Änderungen
- Bei
ForegroundInfo
müssen Sie jetzt dienotificationId
angeben, die bei Verwendung vonListenableWorker.setForegroundAsync()
verwendet werden soll. Dies ist eine funktionsgefährdende Änderung. So können Sie mehrere lang laufendeWorker
s parallel ausführen.WorkManager
verwaltet auch die Lebensdauer der bereitgestelltenNotification
s besser. (b/145473554, aosp/1181208, asop/1181216, asop/1183577)
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
WorkRequest
s 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
wird veröffentlicht. Version 2.3.0-beta01 enthält diese Commits.
Neue Funktionen
- Es wurde eine neue Lint-Regel hinzugefügt, die Entwicklerfehler aufgrund einer falschen Implementierung von
androidx.work.Configuration.Provider
bei Verwendung der On-Demand-Initialisierung verhindert. aosp/1164559
Version 2.3.0-alpha03
23. Oktober 2019
androidx.work:work-*:2.3.0-alpha03
wird veröffentlicht. Version 2.3.0-alpha03 enthält diese Commits.
Neue Funktionen
- Die
WorkManager.createCancelPendingIntent()
API wurde hinzugefügt, mit der sichWorkRequest
s ganz einfach abbrechen lassen, ohne dass eine weitere Komponente in derAndroidManifest.xml
registriert werden muss. Mit dieser API lassen sichWorkRequest
s besonders einfach überNotification
s kündigen. Wir gehen davon aus, dass dies mit den neuen Foreground-APIs in Version 2.3.0 einhergeht. - WorkManager hängt jetzt von
androidx.room:*:2.2.0
ab.
API-Änderungen
ForegroundInfo.getNotificationType()
wurde inForegroundInfo.getForegroundServiceType()
umbenannt, um besser mit den zugrunde liegenden Plattform-APIs übereinzustimmen. (b/142729893, aosp/1143316)
Fehlerkorrekturen
- Es wurde ein Fehler 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
wird 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
containsKey
API inData
wurde inhasKeyWithValueOfType
umbenannt. Die entsprechende Erweiterungsmethode in derktx
-Bibliothek wurde ebenfalls umbenannt. (b/141916545)
Fehlerkorrekturen
- WorkManager plant die Ausführung von Aufgaben fair, wenn die Anzahl der in die Warteschlange eingestellten
WorkRequest
s 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 seinen Endstatus erreicht. (aosp/1114572)
Data
hat jetzt eine viel nützlicheretoString()
-Darstellung. (b/140945323)Data
bietet jetzt eine bessereequals()
-Methode. Außerdem wirddeepEquals
fü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
wird veröffentlicht. Die in dieser Version enthaltenen Commits finden Sie hier.
Neue Funktionen
ListenableWorker
können jetzt den Fortschritt über diesetProgressAsync()
API festlegen. Außerdem wurde inCoroutineWorker
eine entsprechendesuspend
-ingsetProgress
API und inRxWorker
einsetProgress
hinzugefügt, das einSingle<Void>
zurückgibt. Mit diesen neuen APIs können Worker Fortschrittsinformationen überWorkInfo
weitergeben, für die es eine entsprechendegetProgress
API gibt. (b/79481554)Data
hat einecontainsKey()
-API, mit der sich prüfen lässt, ob die Eingabedaten fürWorker
s Schlüssel mit dem erwarteten Typ enthalten. (b/117136838)Data
kann jetzt mitData.toByteArray()
undData.fromByteArray()
serialisiert werden. Beachten Sie, dass es fürData
keine Versionsgarantien gibt. Sie sollten es daher nicht beibehalten oder für die IPC zwischen Anwendungen verwenden. Sie können nur zwischen mehreren Prozessen derselben Anwendung verwendet werden.- Es ist jetzt möglich, eine
InputMergerFactory
überConfiguration.setInputMergerFactory
anzugeben. (b/133273159)
API-Änderungen
- WorkManager löst eine Instanz von
IllegalStateException
aus, wenn einWorkerFactory
eine Instanz vonListenableWorker
zurückgibt, die zuvor aufgerufen wurde. (b/139554406) - Dokumentationsupdates zur
ListenableFuture
-Kündigung und zumonStopped()
-Callback inListenableWorker
. (b/138413671)
Fehlerkorrekturen
- Der In-Process-Scheduler ignoriert jetzt
WorkRequest
mit der Einschränkungidle
. Diese Anfragen werden jetzt nur noch vonJobScheduler
erfasst, wenn das Gerät tatsächlichidle
ist. (aosp/1089779) TestScheduler
verwendet jetzt korrekt die angegebeneExecutor
für die interne Ausführung von Aufgaben in Tests. (aosp/1090749)
Version 2.2.0
Version 2.2.0
15. August 2019
androidx.work:work-*:2.2.0
wird veröffentlicht. Die in dieser Version enthaltenen Commits finden Sie hier.
Dieser Release ist mit androidx.work:work-*:2.2.0-rc01
identisch.
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 bei älteren API-Versionen sorgt. Wenn Ihre App Google Play-Dienste verwendet, fügen Sie Ihrer Gradle-Datei diese Abhängigkeit 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.
Version 2.2.0-rc01
30. Juli 2019
androidx.work:work-*:2.2.0-rc01
wird veröffentlicht. Die in dieser Version enthaltenen Commits finden Sie hier.
Fehlerkorrekturen
- Ein Fehler in der AlarmManager-Implementierung wurde behoben, der dazu führte, dass der Dienst vorzeitig beendet wurde und in seltenen Fällen ein
RejectedExecutionException
angezeigt wurde. (aosp/1092374) (b/138238197). - Es wurde eine Problemumgehung für einen
NullPointerException
bei der Verwendung vonJobScheduler
-APIs auf einigen Geräten hinzugefügt. (aosp/1091020) (b/138364061), (b/138441699)
Version 2.2.0-beta02
19. Juli 2019
androidx.work:work-*:2.2.0-beta02
wird veröffentlicht. Die in dieser Version enthaltenen Commits finden Sie hier.
Fehlerkorrekturen
- Die unbeabsichtigte Jacoco-Abhängigkeit, die in
2.2.0-beta01
eingeführt wurde, wurde entfernt.
Version 2.2.0-beta01
17. Juli 2019
androidx.work:work-*:2.2.0-beta01
wird veröffentlicht. Die in dieser Version enthaltenen Commits finden Sie hier.
Neue Funktionen
androidx.work:work-gcm:2.2.0-beta01
ist ein neues Maven-Artefakt, das die Verwendung von GCMNetworkManager als Scheduler unterstützt, wenn Google Play-Dienste für API-Ebenen <= 22 verfügbar sind. Dies ist eine optionale Abhängigkeit, die für eine zuverlässigere und leistungsstärkere Hintergrundverarbeitung bei älteren API-Versionen sorgt. Wenn Ihre App Google Play-Dienste verwendet, fügen Sie Ihrer Gradle-Datei diese Abhängigkeit 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.
Fehlerkorrekturen
- Korrektur für
IllegalArgumentException
beim Erfassen des Netzwerkstatus auf Nvidia Shield K1-Tablets. (aosp/1010188)
Version 2.1.0
Version 2.1.0
11. Juli 2019
androidx.work:work-*:2.1.0
wird veröffentlicht. Dieser Release ist mit androidx.work:work-*:2.1.0-rc01
identisch.
Wichtige Änderungen seit Version 2.0.1
work-runtime-ktx
erfordert jetzt Java 8. Sollten Probleme auftreten, können Sie Folgendes zu Ihrembuild.gradle
hinzufügen:kotlinOptions { jvmTarget = "1.8" }
- 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.Provider
fü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.
PeriodicWorkRequest
unterstützen jetzt anfängliche Verzögerungen. Mit der MethodesetInitialDelay
inPeriodicWorkRequest.Builder
können Sie eine anfängliche Verzögerung festlegen. b/111404867- Es wurde die Möglichkeit hinzugefügt, die Berechtigung mit
DelegatingWorkerFactory
an einen oder mehrere registrierteWorkerFactory
s zu delegieren. b/131435993 - Es wurde die Möglichkeit hinzugefügt, die
Executor
anzupassen, die von WorkManager für alle internen Verwaltungsaufgaben überConfiguration.Builder.setTaskExecutor
verwendet wird. - Es wurde die Möglichkeit hinzugefügt, mit
TestWorkerBuilder
undTestListenableWorkerBuilder
imwork-testing
-Artefakt Einheitentests für die KlassenWorker
undListenableWorker
zu erstellen.work-testing
zieht jetzt Kotlin als Abhängigkeit ein und enthält standardmäßig mehrere Kotlin-Erweiterungen.
- Die Anzahl der Ausführungsversuche wurde
WorkInfo
hinzugefügt. b/127290461 Data
-Typen können jetzt Bytes 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.0
ab, was einige Datenbankprobleme beheben sollte.
Version 2.1.0-rc01
27. Juni 2019
androidx.work:work-*:2.1.0-rc01
wird veröffentlicht. Die in dieser Version enthaltenen Commits finden Sie hier.
Fehlerkorrekturen
- Ein Fehler wurde behoben, der dazu führte, dass eine Anwendung beim Ausführen von Jobs mit
JobScheduler
abstürzte, während eine Sicherung lief b/135858602.
Version 2.1.0-beta02
20. Juni 2019
androidx.work:work-*:2.1.0-beta02
wird veröffentlicht. Die in dieser Version enthaltenen Commits finden Sie hier.
Fehlerkorrekturen
TestListenableWorkerBuilder
verwendet jetzt die richtigeWorkerFactory
beim Erstellen von Instanzen vonListenableWorker
. b/135275844- Ein Fehler wurde behoben, der aufgrund von Prozessbeendigung zu Abweichungen bei den Ausführungszeiträumen für
WorkRequest
s geführt hat. b/135272196
Version 2.1.0-beta01
13. Juni 2019
androidx.work:work-*:2.1.0-beta01
wird veröffentlicht. Die in dieser Version enthaltenen Commits finden Sie hier.
Fehlerkorrekturen
- WorkManager hängt jetzt von
Room 2.1.0
ab, was einige Datenbankprobleme beheben sollte. - 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 präventiv 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
wird veröffentlicht.
Fehlerkorrekturen
- Verbesserte Dokumentation für
PeriodicWorkRequest
. WorkManagerTestInitHelper
verwendet jetzt den richtigen Hintergrund-Executor für Tests.- Es wurden Probleme mit SQLite behoben, die beim Umgang mit großen Transaktionen auf einigen Geräten auftreten konnten. (b/130182503)
- Die Abhängigkeiten von WorkManager sind jetzt detaillierter. (b/133169148).
- Umgang mit OEM-spezifischen Fehlern bei der Implementierung von
JobScheduler
beim Planen von Jobs mit WorkManager. - Es wurden Verbesserungen am AlarmManager-basierten Scheduler vorgenommen, die zuvor seltene Abstürze verursacht haben. (b/133313734)
Version 2.1.0-alpha02
16. Mai 2019
WorkManager 2.1.0-alpha02 wurde veröffentlicht. Diese Version enthält mehrere neue APIs.
API-Änderungen
PeriodicWorkRequest
unterstützen jetzt anfängliche Verzögerungen. Mit der MethodesetInitialDelay
inPeriodicWorkRequest.Builder
können Sie eine anfängliche Verzögerung festlegen. b/111404867Es wurde die Möglichkeit hinzugefügt, die Berechtigung mit
DelegatingWorkerFactory
an einen oder mehrere registrierteWorkerFactory
s zu delegieren. b/131435993Es wurde die Möglichkeit hinzugefügt, die
Executor
anzupassen, die von WorkManager für alle internen Verwaltungsaufgaben überConfiguration.Builder.setTaskExecutor
verwendet 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.Provider
fü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, mit
TestWorkerBuilder
undTestListenableWorkerBuilder
imwork-testing
-Artefakt Einheitentests für die KlassenWorker
undListenableWorker
zu erstellen.work-testing
zieht jetzt Kotlin als Abhängigkeit ein, enthält aber auch standardmäßig mehrere Kotlin-Erweiterungen.
- Die Anzahl der Ausführungsversuche wurde
WorkInfo
hinzugefügt. b/127290461 Data
-Typen können jetzt Bytes und Byte-Arrays speichern und abrufen. Dadurch wird die maximale Größe vonData
-Objekten NICHT geändert.CoroutineWorker.coroutineContext
ist veraltet. Dieses Feld wurde fälschlicherweise alsCoroutineDispatcher
typisiert. Sie sollten es nicht mehr benötigen, da Sie im Hauptteil der suspend-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 ist jetzt verfügbar. 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 alten 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 seltener Absturz wurde behoben, der auftrat, wenn die Constraint-Verfolgung in APIs vor JobScheduler nicht bereinigt wurde. b/129226383
- Es wurde ein
StackOverflowError
im Zusammenhang mit langen Arbeitsketten behoben. b/129091233 - Die Dokumentation für
PeriodicWorkRequest
wurde aktualisiert, um darauf hinzuweisen, dass flexible Zeit unter API 23 nicht unterstützt wird. - Einige fehlerhafte Links in der Kotlin-Dokumentation wurden korrigiert.
Version 2.0.0
Version 2.0.0
20. März 2019
WorkManager 2.0.0 ist jetzt verfügbar. Diese Version ist mit 2.0.0-rc01 identisch 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 seltener Absturz wurde behoben, der auftrat, wenn die Constraint-Verfolgung in APIs vor JobScheduler nicht bereinigt wurde. b/129226383
- Es wurde ein
StackOverflowError
im Zusammenhang mit langen Arbeitsketten behoben. 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 Release-Kandidat für die stabile Version 1.0.0 von WorkManager. Diese Version enthält zwei Fehlerkorrekturen.
Fehlerkorrekturen
Worker
werden jetzt nach einem Anwendungsabsturz korrekt geplant. b/124546316Worker
s, die eine ungeprüfteException
auslösen, werden jetzt korrekt alsFAILED
gekennzeichnet und führen nicht mehr zum Absturz des App-Prozesses.
Version 1.0.0-rc01
14. Februar 2019
Dies ist ein Release-Kandidat für die stabile Version 1.0.0 von WorkManager. Diese Version enthält eine Fehlerkorrektur.
Fehlerkorrekturen
- Die auf AlarmManager basierende Implementierung berücksichtigt jetzt
flex
-Zeiträume für PeriodicWorkRequests korrekt. b/124274584
Version 1.0.0-beta05
6. Februar 2019
Diese Version enthält einige Fehlerbehebungen.
Fehlerkorrekturen
- Ein Fehler wurde behoben, bei dem
JobScheduler.getPendingJob(...)
in API 23 verwendet wurde. b/123893059 - Ein
NullPointerException
auf Geräten mit Android 5.1 (API-Level 22) oder niedriger wurde behoben. b/123835104
Version 1.0.0-beta04
4. Februar 2019
Diese Version enthält einige Fehlerbehebungen.
Fehlerkorrekturen
- Die Planung von PeriodicWork wurde für die AlarmManager-basierte Implementierung verbessert.
- Ein Problem wurde behoben, bei dem WorkManager Einschränkungen bei Verwendung der AlarmManager-basierten Implementierung nicht richtig verfolgt hat. b/123379508
- Ein Fall wurde behoben, in dem WorkManager die Wiederholung von Aufgaben bei Prozessende mit der AlarmManager-basierten Implementierung nicht versucht hat. b/123329850
- Ein Fall wurde behoben, der dazu führte, dass WorkManager Wakelocks verlor, wenn die AlarmManager-basierte Implementierung verwendet wurde.
Version 1.0.0-beta03
25. Januar 2019
Diese Version enthält einige Fehlerbehebungen.
Fehlerkorrekturen
- Wir haben eine Regression
1.0.0-beta02
eingeführt, die dazu führte, dass Aufgaben in einigen Situationen nicht richtig ausgeführt wurden. b/123211993 - Ein Problem wurde behoben, bei dem die Backoff-Zeit nicht richtig eingehalten wurde. b/122881597
- Ein
ConcurrentModificationException
auf Geräten mit Android 5.1 (API) oder niedriger wurde behoben. Dies ist eine Fortsetzung der Korrektur in1.0.0-beta02
. b/121345393 exported=false
wurde für einige Komponenten in unserem Manifest hinzugefügt, für die diese Annotation 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, in dem periodische Aufgaben auf Geräten mit Android 6.0 (API-Level 23) mehr als einmal pro Intervall ausgeführt werden konnten. b/121998363
- Ein
ConcurrentModificationException
auf Geräten mit Android 5.1 (API-Level 22) oder niedriger wurde behoben. b/121345393 - Es wurde ein Fehler behoben, der dazu führte, dass Aufgaben fälschlicherweise ausgeführt wurden, wenn die Einschränkungen auf Geräten mit Android 5.1 (API-Level 22) oder niedriger nicht erfüllt waren. b/122578012
- Die Verarbeitung von abgeschlossenen Arbeitsvorgängen wurde optimiert, um in einigen Grenzfall-Szenarien schneller zu sein. b/122358129
- Es wurde eine Änderung hinzugefügt, um potenzielle Race-Bedingungen zwischen mehreren Instanzen von
LiveData
zu beheben, die von WorkManager verwendet werden. - Es wird jetzt die
Room
-Abhängigkeit1.1.1
anstelle von1.1.1-rc01
verwendet. Diese Versionen sind identisch. b/122578011
Version 1.0.0-beta01
19. Dezember 2018
Diese Version enthält keine API-Änderungen. WorkManager wird voraussichtlich bis zur nächsten Version API-stabil bleiben, sofern kein schwerwiegendes Problem auftritt. Diese Version enthält einige Fehlerbehebungen.
Fehlerkorrekturen
- Zuvor abgebrochene untergeordnete Arbeiten von erfolgreich abgeschlossenen übergeordneten Arbeiten werden nicht mehr ausgeführt. b/120811767
- Korrekt initialisierte Protokollierungsklassen (hauptsächlich bei Tests).
Version 1.0.0-alpha13
12. Dezember 2018
Dieser Release enthält eine geringfügige API-Änderung, die für einige Kotlin-Nutzer hilfreich sein wird.
API-Änderungen
androidx.work.Result
wurde als innere Klasse vonListenableWorker
verschoben. Dadurch werden Refactoring-Konflikte mit derResult
-Klasse auf oberster Ebene von Kotlin verhindert. Dies ist eine API-Änderung, die zu Inkompatibilitäten führen kann. b/120564418
Breaking API Changes
androidx.work.Result
wurde als innere Klasse vonListenableWorker
verschoben.
Version 1.0.0-alpha12
5. Dezember 2018
Dieses Release enthält einige funktionsgefährdende API-Änderungen. Weitere Informationen finden Sie unten im Abschnitt Funktionsgefährdende API-Änderungen. Diese Version wird wahrscheinlich als unsere erste Betaversion veröffentlicht. alpha12
enthält auch umfassende Dokumentationsaktualisierungen.
API-Änderungen
- Mit dem neuen Artefakt
work-rxjava2
wirdRxWorker
eingeführt. Dies ist einListenableWorker
, der einenSingle<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 uns ansehen, ob wir in Zukunft eine Alternative anbieten können. Payload
mitResult
zusammengeführtResult
ist 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. IhreListenableFuture
führen jetzt zuResult
statt zuPayload
.Worker
s haben 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- Variante
WorkRequest.Builder.setBackoffCriteria(BackoffPolicy, Duration)
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
ContentUriTriggers
und die Methoden, die darauf verweisen, sind nicht mehr öffentlich verfügbar. Dies ist eine funktionsgefährdende Änderung. - Die restlichen Varargs-Methoden in
WorkManager
,WorkContinuation
undOneTimeWorkRequest
wurden 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 wurden 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 überobserveForever
beobachtet wird, wird über WorkManager erfasst. Dies ist ein Backport eines Room-Bibliotheks-Fix. 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()
einWorkInfo
mit demCANCELLED
State
zurück. - Behandeln Sie
null
Result
s 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 uns ansehen, ob wir in Zukunft eine Alternative anbieten können. Payload
mitResult
zusammengeführtResult
ist 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. IhreListenableFuture
führen jetzt zuResult
statt zuPayload
.Worker
s haben 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
ContentUriTriggers
und die Methoden, die darauf verweisen, sind nicht mehr öffentlich verfügbar. - Die restlichen Varargs-Methoden in
WorkManager
,WorkContinuation
undOneTimeWorkRequest
wurden 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 am beta
zur stabilen API werden.
Diese Version enthält funktionsgefährdende API-Änderungen. Weitere Informationen finden Sie unten im Abschnitt Funktionsgefährdende API-Änderungen.
API-Änderungen
- Mit
work-runtime-ktx
wird ein neuerCoroutineWorker
eingeführt. WorkStatus
wurde inWorkInfo
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, obWorkRequest
gekündigt wurde. BeiWorkManager
wird diese Unterscheidung nicht mehr getroffen. Dies ist eine funktionsgefährdende Änderung.- Das Paket
androidx.work.test
wurde inandroidx.work.testing
umbenannt. Dies ist eine funktionsgefährdende Änderung. - Setter für
Constraints
sind nicht mehr Teil der öffentlichen API. Dies ist eine funktionsgefährdende Änderung. WorkerParameters.getTriggeredContentUris()
undWorkerParameters.getTriggeredContentAuthorities()
sind zuvor zurückgegebene Arrays. 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
WorkStatus
ist 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 eindeutigeOneTimeWorkRequest
s in die Warteschlange zu stellen, ohne eineWorkContinuation
erstellen zu müssen. - Alle Varianten der Methoden
enqueue
undcancel
fürWorkManager
geben jetzt einen neuen TypOperation
zurück. Dies ist eine funktionsgefährdende Änderung. - Alle Varianten von
enqueue
akzeptieren keine Varargs mehr fürWorkRequest
s. Dies ist eine funktionsgefährdende Änderung. Verwenden Sie stattdessen Sammlungen. MitArrays.asList()
können Sie vorhandenen Code ändern. Wir haben dies getan, um die API-Oberfläche und die Anzahl der Methoden zu reduzieren. - Der Versuch,
initialize
WorkManager
mehr als einmal pro Prozess auszuführen, führt jetzt zu einemIllegalStateException
. Dies ist eine funktionsgefährdende Änderung.
Fehlerkorrekturen
WorkRequest.Builder
s imwork-runtime-ktx
-Artefakt verwenden jetztListenableWorker
s. Behebt b/117666259- Die nächste Ausführungszeit für
PeriodicWork
muss in der Zukunft liegen. Behebt b/118204399 - Potenzielle Laufwerk-E/A-Vorgänge bei der Verwendung von WorkManager beim Start der App entfernen. Behebt b/117796731
- Eine Race-Bedingung in
WorkConstraintsTracker
wurde behoben. Behebt android-workmanager/issues/56
Breaking API Changes
WorkStatus
wurde inWorkInfo
umbenannt. Alle entsprechendengetStatus
-Methodenvarianten wurden in die entsprechendengetWorkInfo
-Varianten umbenannt.ListenableWorker.onStopped()
akzeptiert jetzt ein boolesches Argument, das angibt, obWorkRequest
gekündigt wurde. BeiWorkManager
wird diese Unterscheidung nicht mehr getroffen.- Das Paket
androidx.work.test
wurde inandroidx.work.testing
umbenannt. - Setter für
Constraints
sind nicht mehr Teil der öffentlichen API. WorkerParameters.getTriggeredContentUris()
undWorkerParameters.getTriggeredContentAuthorities()
sind zuvor zurückgegebene Arrays. Diese Methoden geben jetzt Sammlungen zurück.ListenableWorker.onStartWork()
wird inListenableWorker.startWork()
umbenannt.- Der Konstruktor für
WorkStatus
ist nicht mehr Teil der öffentlichen API. Configuration.getMaxJobSchedulerID()
undConfiguration.getMinJobSchedulerID()
werden inConfiguration.getMinJobSchedulerId()
bzw.Configuration.getMaxJobSchedulerId()
umbenannt.- Alle Varianten der Methoden
enqueue
undcancel
fürWorkManager
geben jetzt einen neuen TypOperation
zurück. - Alle Varianten von
enqueue
akzeptieren keine Varargs mehr fürWorkRequest
s. - Der Versuch,
initialize
WorkManager
mehr als einmal pro Prozess auszuführen, führt jetzt zu einemIllegalStateException
.
Version 1.0.0-alpha10
11. Oktober 2018
In diesem Release wird die entwicklergesteuerte asynchrone Arbeit unterstützt. Diese Version enthält funktionsgefährdende API-Änderungen. Weitere Informationen finden Sie unten im Abschnitt Funktionsgefährdende 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 daher etwas Zeit, um uns Ihr Feedback über unseren Issue Tracker mitzuteilen.
API-Änderungen
- Alle zuvor verwendeten
deprecated
-Methoden und -Klassen wurden entfernt, insbesondere der StandardkonstruktorWorker
. Dies ist eine funktionsgefährdende API-Änderung. NonBlockingWorker
wurde inListenableWorker
umbenannt.ListenableWorker
ist jetzt eine nicht ausgeblendete öffentliche Klasse und kann verwendet werden.ListenableWorker
bietet Zugriff auf eine abstrakte Methode,ListenableFuture<Payload> onStartWork()
, die im Hauptthread aufgerufen wird. Es liegt an Ihnen, die Arbeit asynchron zu starten und zu verarbeiten. Wenn Sie fertig sind, sollten SieListenableFuture
entsprechend aktualisieren. Referenzimplementierungen vonListenableFuture
s sind imFutures
-Paket inalpha02
verfügbar (siehe unten im AbschnittWorkManager
).Worker
erweitertListenableWorker
und funktioniert weiterhin wie bisher mit einer abstraktenResult doWork()
-Methode.- Einige Methoden und Elemente wurden von
Worker
nachListenableWorker
verschoben. - Wir werden demnächst Referenzimplementierungen für
ListenableWorker
s bereitstellen, die Kotlin-Coroutinen (sobald die stabilen Versionen veröffentlicht werden) und RxJava2 verwenden.
- Die Schnittstelle
WorkerFactory
und die konkrete ImplementierungDefaultWorkerFactory
wurden in einer abstrakten Klasse namensWorkerFactory
zusammengefü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
ListenableFuture
verwenden.WorkManager.enqueue()
hat beispielsweisevoid
zurü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. - Beachten Sie, dass diese
ListenableFuture
s nicht angeben, 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 und schwer nachzuvollziehen sind (wird der Vorgang oder das Ergebnis abgebrochen?). Dies ist im Vertrag vonFuture
enthalten. - Um die Parität mit den synchronen
getStatus*
-Methoden aufrechtzuerhalten, haben wirListenableFuture
-Varianten bereitgestellt und die vorhandenen Methoden, dieLiveData
zurückgegeben haben, umbenannt, sodass „LiveData“ explizit im Namen enthalten ist (z. B.getStatusesByIdLiveData(UUID)
). Dies ist eine API-Änderung, die zu Inkompatibilitäten führen kann.
- Sie können jetzt synchron Daten abrufen und beobachten, indem Sie
Fehlerkorrekturen
- Das bekannte Problem aus Alpha09 in Bezug auf doppelte
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
NullPointerException
in einem Race Condition-Szenario behoben, in dem die ArbeitREPLACE
wurde. b/116253486 und b/116677275 WorkContinuation.combine()
akzeptiert jetzt ein oder mehrereWorkContinuation
s anstelle von mindestens zwei. b/117266752
Breaking API Changes
- Alle zuvor verwendeten
deprecated
-Methoden und -Klassen wurden entfernt, insbesondere der StandardkonstruktorWorker
. - Die Schnittstelle
WorkerFactory
und die konkrete ImplementierungDefaultWorkerFactory
wurden in einer abstrakten Klasse namensWorkerFactory
zusammengeführt. WorkManager.synchronous()
undWorkContinuation.synchronous()
wurden entfernt.WorkManager.getStatus*()
-Methoden geben jetztListenableFuture
s zurück.WorkManager.getStatus*LiveData()
gibtLiveData
zurück.
Version 1.0.0-alpha09
19. September 2018
Bekanntes Problem
Wenn das folgende Problem auftritt: „More than one file was found with OS independent path 'META-INF/proguard/androidx-annotations.pro'“ (Es wurde mehr als eine Datei mit dem betriebssystemunabhängigen Pfad „META-INF/proguard/androidx-annotations.pro“ gefunden), fügen Sie bitte Folgendes 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 Mindest-Backoff-Verzögerung für Firebase JobDispatcher wird erzwungen. b/113304626
- Verbesserte Threading-Garantien innerhalb der Bibliothek.
- Ein potenzielles Problem mit der internen Deduplizierung von
LiveData
wurde behoben.
API-Änderungen
- Sie können jetzt eigene
Worker
-Instanzen zur Laufzeit erstellen, indem Sie einWorkerFactory
als Teil desWorkManager.Configuration
angeben. Die Fallback-Factory istDefaultWorkerFactory
, was dem Verhalten früherer Versionen von WorkManager entspricht.- Die Standardkonstruktoren für
Worker
undNonBlockingWorker
sind 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 Versionen in die API einführen. Diese Änderung wird dazu beitragen, dassNonBlockingWorker
wieder sichtbar gemacht werden kann. - Es wurde die Möglichkeit hinzugefügt, zeitgesteuerte Aufgaben in
TestDriver
überTestDriver.setInitialDelayMet(UUID)
undTestDriver.setPeriodDelayMet(UUID)
auszulösen. b/113360060
Aktuelle Änderungen
- Die Standardkonstruktoren
Worker
undNonBlockingWorker
sind veraltet. Migrieren Sie so schnell wie möglich zum neuen Konstruktor. In zukünftigen Versionen wird der Standardkonstruktor entfernt.
Version 1.0.0-alpha08
27. August 2018
Fehlerkorrekturen
- WorkManager-Komponenten wurden explizit als „Direct Boot Unaware“ gekennzeichnet, damit sie nicht während des Direct Boot-Vorgangs gestartet werden. In Zukunft 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, durch das periodische Aufgaben nicht wiederholt ausgeführt wurden (bezogen auf das oben genannte Problem). b/112859683
- Backoff-Richtlinien werden berücksichtigt, wenn der App-Prozess bereits ausgeführt wird.
- Die Ausnahmenachrichten in
Data
wurden korrigiert, um darauf hinzuweisen, dass das Limit 10 KB beträgt. - Der Maximalwert von
Configuration.setMaxSchedulerLimit(int)
wurde auf 50 gesenkt, um eine gewisse Latenz bei der Verarbeitung vonJobScheduler
zu berücksichtigen. b/112817355
Version 1.0.0-alpha07
16. August 2018
Fehlerkorrekturen
- Es wurde ein potenzielles Problem mit SQL-Abfragen mit negativen Grenzwerten behoben, die eine unbegrenzte Anzahl von Ergebnissen zurückgeben konnten.
- Wenn die Ausführung einer Aufgabe abgeschlossen ist, werden jetzt alle ausstehenden Kopien dieser Aufgabe in anderen Schedulern korrekt abgebrochen. Dadurch wurde das Limit von
JobScheduler
Jobs überschritten. b/111569265 - Es wurde ein
ConcurrentModificationException
inConstraintTracker
behoben. b/112272753 - Die Rückgabetyp-Annotationen von
Data.getBooleanArray(String)
undData.getIntArray(String)
wurden in@Nullable
anstelle von@NonNull
geändert. b/112275229
API-Änderungen
Worker
erweitert jetzt eine neue Klasse,NonBlockingWorker
. Das hat keine Auswirkungen auf die aktuelle Nutzung. In Zukunft wirdNonBlockingWorker
eine vollständig unterstützte Einheit für benutzerdefinierte Threading-Lösungen sein.- Die Rückgabetyp-Annotationen von
Data.getBooleanArray(String)
undData.getIntArray(String)
wurden in@Nullable
anstelle von@NonNull
geändert. b/112275229 - Kotlin-Erweiterungen:
Map.toWorkData()
wurde eingestellt und einworkDataOf(vararg Pair<String, Any?>)
auf oberster Ebene wurde hinzugefügt, um die Konsistenz mit vorhandenen APIs zu verbessern.
Version 1.0.0-alpha06
1. August 2018
Fehlerkorrekturen
- Datenbank-Sperre beim Planen von Aufgaben verhindern. b/111801342
- Ein Fehler wurde behoben, der dazu führte, dass
PeriodicWork
im Inaktivmodus nicht planmäßig ausgeführt wurde. b/111469837 - Ein Race-Bedingung beim Tracking von Einschränkungen wurde behoben, die zum Absturz von
WorkManager
geführt hat. googlecodelabs/android-workmanager/issues/56 - Erstellen Sie eindeutige
WorkRequest
s, wenn SieWorkRequest.Builder#build()
verwenden. b/111408337 - Aktivieren Sie die Verwendung von
RescheduleReceiver
nur, wennWorkRequest
s dies erfordern. b/111765853
Version 1.0.0-alpha05
24. Juli 2018
API-Änderungen
WorkManager.getInstance()
ist jetzt mit@NonNull
statt mit@Nullable
gekennzeichnet. Wenn das Singleton bei manueller Initialisierung nicht richtig initialisiert wird, löst die Methode stattdessen eineIllegalStateException
aus. Dies ist eine API-Änderung, die zu Inkompatibilitäten führen kann.- Es wurde eine neue API,
Configuration.Builder.setMinimumLoggingLevel(int)
, hinzugefügt, mit der die Ausführlichkeit von WorkManager gesteuert werden kann. Standardmäßig protokolliert WorkManagerLog.INFO
und höher. - Die Signatur von
Data.getString()
wurde geändert, sodass kein Standardwert mehr verwendet wird (implizitnull
). Dies ist eine nicht abwärtskompatible API-Änderung. - Einige Methoden, die nur für die interne Verwendung erforderlich sind, wurden als
@hide
gekennzeichnet. Dazu gehören derConstraints
-Konstruktor,Data.toByteArray()
undData.fromByteArray(byte[])
. Dies ist eine funktionsgefährdende API-Änderung.
Fehlerkorrekturen
- WorkManager führt keine Aufgaben mehr in bekannten Fällen der automatischen Sicherung aus. Dies könnte zu einem Absturz geführt haben. b/110564377
- Das Problem, dass
PeriodicWorkRequest
s bei Verwendung vonJobScheduler
doppelt geplant wurden, wurde behoben. b/110798652 - Ein Problem wurde behoben, bei dem
PeriodicWorkRequest
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
- Es wurden einige potenzielle Race Conditions und Timing-Probleme behoben.
BroadcastReceiver
, die nicht mehr benötigt wurden, wurden korrekt freigegeben.- Die Leistung beim erneuten Planen wurde optimiert, wenn Apps nach dem erzwungenen Schließen neu gestartet werden.
- Ermöglicht, dass
TestScheduler.setAllConstraintsMet(UUID)
vor oder nach dem Einreihen des angegebenenWorkRequest
aufgerufen wird. b/111238024
Aktuelle Änderungen
WorkManager.getInstance()
ist jetzt mit@NonNull
statt mit@Nullable
gekennzeichnet.- Die Signatur von
Data.getString()
wurde geändert, sodass kein Standardwert mehr verwendet wird (implizitnull
). - Einige Methoden, die nur für die interne Verwendung erforderlich sind, wurden als
@hide
gekennzeichnet. Dazu gehören derConstraints
-Konstruktor,Data.toByteArray()
undData.fromByteArray(byte[])
.
Version 1.0.0-alpha04
26. Juni 2018
Fehlerkorrekturen
PeriodicWorkRequest
werden jetzt bei Verwendung derAlarmManager
-basierten Implementierung korrekt neu geplant.- Ein potenzieller ANR-Fehler wurde behoben, der beim Neuplanen aller Worker nach einem erzwungenen Stopp oder einem Neustart auftreten konnte. b/110507716
- Verschiedenen 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 beim Erstellen doppelter impliziter Tags wurde behoben. Dieses Problem ist sehr selten und trat nur auf, wenn Sie selbst dasselbe implizite Tag-Format verwendet haben.
Version 1.0.0-alpha03
19. Juni 2018
Fehlerkorrekturen
Eine Race-Bedingung in der
AlarmManager
-basierten Implementierung wurde behoben. b/80346526.Doppelte Jobs bei Verwendung von
JobScheduler
nach einem Geräteneustart behoben.Jobs mit Content-URI-Triggern bleiben jetzt auch nach Neustarts erhalten. b/80234744
Dokumentationsupdates: b/109827628, b/109758949, b/80230748
Ein Absturz beim erneuten Einreihen eines
WorkRequest
wurde behoben. b/109572353.Es wurden Kotlin-Compilerwarnungen bei Verwendung der
work-runtime-ktx
-Abhängigkeit behoben.WorkManager verwendet jetzt
Room
-Version1.1.1-rc1
.
API-Änderungen
getStatusesSync()
wurde hinzugefügt, die synchrone Version vonWorkContinuation.getStatuses()
.Worker
kann zwischen einer vom Nutzer initiierten Kündigung und einem vom Betriebssystem angeforderten temporären Stopp unterscheiden.Worker.isStopped()
gibttrue
zurück, wenn ein Stopp angefordert wurde.Worker.isCancelled()
gibttrue
zurück, wenn die Aufgabe explizit abgebrochen wurde. b/79632247- Unterstützung für JobParameters#getNetwork() auf API 28 hinzugefügt. Dies wird über
Worker.getNetwork()
bereitgestellt. Configuration.Builder.setMaxSchedulerLimit(int maxSchedulerLimit)
wurde hinzugefügt, damit Sie erzwingen können, wie viele Jobs anJobScheduler
oderAlarmManager
gesendet werden können. So wird verhindert, dassWorkManager
alle verfügbarenJobScheduler
-Slots belegt.Configuration.setJobSchedulerJobIdRange(int minJobSchedulerId, int maxJobSchedulerId)
wurde hinzugefügt. Damit lässt sich ein Bereich vonJobScheduler
-Job-IDs definieren, die fürWorkManager
sicher sind. b/79996760Worker.getRunAttemptCount()
gibt die aktuelle Anzahl der Ausführungen für eine bestimmteWorker
zurück. b/79716516- Mit
WorkManager.enqueueUniquePeriodicWork(String uniqueWorkName, ExistingPeriodicWorkPolicy existingPeriodicWorkPolicy, PeriodicWorkRequest periodicWork)
können Sie eindeutigePeriodicWorkRequest
s in die Warteschlange stellen. b/79600647 - Mit
WorkManager.cancelAllWork()
werden alleWorker
-Vorgänge abgebrochen. Bibliotheken, die vonWorkManager
abhä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
WorkRequest
s wurde ein implizites Tag hinzugefügt. Das ist der voll qualifizierte Klassenname für dieWorker
. So könnenWorkRequest
s ohnetag
s oder wenn dieid
nicht verfügbar ist, entfernt werden. b/109572351
Aktuelle Änderungen
Worker.WorkerResult
wurde inWorker.Result
umbenannt.Worker.onStopped
hat jetzt einen zusätzlichenisCancelled
-Parameter, der auftrue
gesetzt wird, wenn dasWorker
explizit gekündigt wurde.
Version 1.0.0-alpha02
24. Mai 2018
Fehlerkorrekturen
- Es wurde ein
NullPointerException
aufState.isFinished()
behoben. b/79550068 - Ein Problem wurde behoben, das dazu führte, dass
Worker
aufApplication.onCreate()
verschoben wurden. b/79660657 - Ein Problem wurde behoben, bei dem mehr Arbeit geplant werden konnte, als vom Betriebssystem zulässig ist. b/79497378
- Die Bereinigung von Wake Locks, die mit
Worker
verknüpft sind, wurde in den Hintergrundthread verschoben. - Die
AlarmManager
-Implementierung wird jetzt korrekt bereinigt, wenn alle ausstehenden Arbeiten abgeschlossen sind. - Es wurden SQL-Bereinigungsabfragen korrigiert, die sich auf nicht englischsprachige Gebiete auswirkten. b/80065360
- Unterstützung für
float
s inData
hinzugefügt. b/79443878 Data.Builder.putAll()
gibt jetzt eine Instanz vonBuilder
zurück. b/79699162- Mehr Javadoc und Korrekturen in der Dokumentation. b/79691663
API-Änderungen
Worker
können darauf reagieren, dass sie angehalten werden. MitWorker.isStopped()
kann geprüft werden, ob einWorker
beendet wurde. MitWorker.onStopped()
können einfache Bereinigungsvorgänge ausgeführt werden.- Die
Worker.getTags()
API gibt einSet
mit Tags zurück, die mit demWorker
verknüpft sind. - Es wurden
javax.time.Duration
-Überladungen für APIs hinzugefügt, die eine Kombination aus Dauer undTimeUnit
s verwenden. Dies wird durch@RequiresApi(26)
geschützt. WorkManager
-Erweiterungen wurden vomandroidx.work.ktx
-Paket in dasandroidx.work
-Paket verschoben. Die alten Erweiterungen sind veraltet und werden in einer zukünftigen Version entfernt.Configuration.withExecutor()
ist veraltet. Verwenden Sie stattdessenConfiguration.setExecutor()
.
Version 1.0.0-alpha01
8. Mai 2018
WorkManager vereinfacht die Planung und Ausführung von garantierten, einschränkungsbewussten Hintergrundaufgaben. Diese erste Version ist 1.0.0-alpha01
.