WorkManager
Letzte Aktualisierung | Stabile Version | Releasekandidat | Beta-Ausgabe | Alpharelease |
---|---|---|---|---|
17. April 2024 | 2.9.0 | − | − | 2.10.0-alpha02 |
Abhängigkeiten deklarieren
Um eine Abhängigkeit von WorkManager hinzuzufügen, müssen Sie Ihrem Projekt das Google Maven-Repository hinzufügen:
Fügen Sie der Datei build.gradle
für Ihre Anwendung oder Ihr Modul die Abhängigkeiten für die benötigten Artefakte hinzu:
Groovig
dependencies { def work_version = "2.9.0" // (Java only) implementation "androidx.work:work-runtime:$work_version" // Kotlin + coroutines implementation "androidx.work:work-runtime-ktx:$work_version" // optional - RxJava2 support implementation "androidx.work:work-rxjava2:$work_version" // optional - GCMNetworkManager support implementation "androidx.work:work-gcm:$work_version" // optional - Test helpers androidTestImplementation "androidx.work:work-testing:$work_version" // optional - Multiprocess support implementation "androidx.work:work-multiprocess:$work_version" }
Kotlin
dependencies { val work_version = "2.9.0" // (Java only) implementation("androidx.work:work-runtime:$work_version") // Kotlin + coroutines implementation("androidx.work:work-runtime-ktx:$work_version") // optional - RxJava2 support implementation("androidx.work:work-rxjava2:$work_version") // optional - GCMNetworkManager support implementation("androidx.work:work-gcm:$work_version") // optional - Test helpers androidTestImplementation("androidx.work:work-testing:$work_version") // optional - Multiprocess support implementation "androidx.work:work-multiprocess:$work_version" }
Informationen zur Verwendung von Kotlin-Erweiterungen finden Sie in der ktx-Dokumentation.
Weitere Informationen zu Abhängigkeiten finden Sie unter Build-Abhängigkeiten hinzufügen.
Feedback
Dein Feedback hilft uns, Jetpack zu verbessern. Lassen Sie 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 eine neue erstellen. Durch Klicken auf die Stern-Schaltfläche können Sie zu einem vorhandenen Problem abstimmen.
Weitere Informationen finden Sie in der Dokumentation zum Issue Tracker.
Version 2.10
Version 2.10.0-alpha02
17. April 2024
androidx.work:work-*:2.10.0-alpha02
wird freigegeben. Version 2.10.0-alpha02 enthält diese Commits.
API-Änderungen
- Neue Funktion zur Ausgabe von Trace-Spans über eine konfigurierbare
@RestrictTo
-Tracer
inWorkManager
. (I17d7f, b/260214125) Configuration.workerCoroutineContext
wurde zur Kontrolle des Disponenten hinzugefügt, auf demCoroutineWorker
ausgeführt wird. Es hilft, die Nutzung vonDispatchers.Default
inWorkManager
vollständig zu vermeiden. (Icd1b7)- Benutzerdefinierte Ausnahme-Handler für Worker hinzufügen (Ib1b74, b/261190695)
OneTimeWorkRequest.Builder
undPeriodicWorkRequest.Builder
können jetzt mitKClass
stattClass
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 Null-Zulässigkeit. Möglicherweise sind Änderungen im Quellcode der Clients erforderlich, wenn die Annahmen zur Null-Zulässigkeit in diesem Code falsch waren. (If6757)
Version 2.10.0-alpha01
24. Januar 2024
androidx.work:work-*:2.10.0-alpha01
wird freigegeben. 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. Dadurch können Sie genauer steuern, welches Netzwerk dieser Worker ausführen soll.
API-Änderungen
- Möglichkeit zur Angabe von
NetworkRequest
als Einschränkung wird hinzugefügt. (Id98a1, b/280634452)
Version 2.9
Version 2.9.0
29. November 2023
androidx.work:work-*:2.9.0
wird freigegeben. Version 2.9.0 enthält diese Commits.
Wichtige Änderungen seit Version 2.8.0
- Beobachtbarkeit über
Flow
Sek. Anstelle vonLiveData
kann der Fortschritt des Workers jetzt mithilfe von Flow überWorkManager.getWorkInfosFlow
und ähnliche Methoden beobachtet werden. WorkManager
gibt jetzt einen Hinweis darauf, warum ein Worker zuvor angehalten wurde. Sie kann von einem Worker selbst mit der MethodegetStopReason()
oder vonWorkInfo
mitgetStopReason()
abgefragt werden.- Präzise Zeitplanung der regelmäßigen Mitarbeiter über
setNextScheduleTimeOverride
. Dies ermöglicht die dynamische Berechnung des nächsten regelmäßigen Arbeitsplans, der verwendet werden kann, um erweiterte Funktionen wie adaptive Aktualisierungszeiten, benutzerdefiniertes Wiederholungsverhalten oder die Ausführung eines Newsfeed-Workers zu implementieren, bevor der Nutzer jeden Morgen ohne Drift aufwacht.ExistingPeriodicWorkPolicy.UPDATE
sollte bei diesen Verfahren verwendet werden, um zu vermeiden, dass ein derzeit ausgeführter Worker bei der Planung des nächsten Workers abgebrochen wird. - WorkManager-Tests mit Threading, die der Produktion entsprechen.
ExecutorsMode.PRESERVE_EXECUTORS
kann ininitializeTestWorkManager
verwendet werden, um die inConfiguration
festgelegten Executors beizubehalten und den echten Hauptthread zu verwenden. - Coroutines APIs wie
CoroutineWorker
wurden vom zusätzlichen Artefakt „work-runtime-ktx“ in das Hauptartefakt „work-runtime“ verschoben. „work-runtime-ktx“ ist jetzt leer.
API-Änderungen
- „
stopReason
“ wurde „WorkInfo
“ hinzugefügt. Sie machtstopReason
verfügbar, nachdem der Worker ausgeführt wurde. Das kann in nutzungsfreundlicher Weise hilfreich sein, umstopReason
zu melden. Denn sobald ein Worker gestoppt wurde, könnte die App selbst sehr schnell beendet werden. (I21386) - Zulassen, dass
Clock
über die Konfiguration festgelegt und für die Ausführungsabfolge von Worker-Tests verwendet wird. (Ic586e) - Zu
ListenableWorker
wurde die MethodegetStopReason()
hinzugefügt, die einen Hinweis darauf gibt, warum der Worker angehalten wurde. (I07060) WorkManagerTestInitHelper#closeWorkDatabase()
wurde hinzugefügt, um die Warnung von Closeguard über gehackte Ressourcen zu vermeiden. (Ia8d49)- Der Konstruktor von
WorkInfo
ist jetzt öffentlich, was für Tests nützlich sein kann. (Ia00b6, b/209145335) work-runtime-ktx
ist jetzt leer,CoroutineWorker
und andere Kotlin-spezifische Dienstprogramme sind jetzt im Hauptartefakt verfügbar. (I71a9a)setNextScheduleTimeOverride
-Methode hinzugefügt, die eine genaue Einrichtung regelmäßiger Arbeitspläne ermöglicht (I3b4da)getNextScheduleTimeMillis
wurde hinzugefügt, um Informationen zur geplanten Laufzeit zu erhalten, wirdWorkInfo
hinzugefügt. (I797e4)- Informationen zur anfänglichen Verzögerung und Periodizität werden zu
WorkInfo
hinzugefügt. (I52f2f) - Neue Methode zur Beobachtung von Workern über Abläufe über die Methoden
getWorkInfosByTagFlow
,getWorkInfoByIdFlow
,getWorkInfosForUniqueWorkFlow
,getWorkInfosFlow
(If122a) - Fehlende
@RequiresApi(...)
-Annotationen zu den Konstruktoren und Attributen vonConstraints
hinzugefügt. Sie sind jetzt an den entsprechenden Anmerkungen in Settern inConstraints.Builder
ausgerichtet, die in frühen Versionen vonWorkManager
vorhanden waren. (I6d7d2) WorkManager
hat jetzt ein separates Limit für Inhalts-URI-Worker, um ihnen garantierte Slots inJobScheduler
zuzuweisen, um zu verhindern, dass unter hoher Auslastung fehlende Inhaltsaktualisierungen fehlen. Das Limit kann überConfiguration.Builder.setContentUriTriggerWorkersLimit
konfiguriert werden. (Ic128f)- Einschränkungen werden zu
WorkInfo
hinzugefügt. (I162c0)
Version 2.9.0-rc01
18. Oktober 2023
androidx.work:work-*:2.9.0-rc01
wird freigegeben. 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 freigegeben. Version 2.9.0-beta01 enthält diese Commits.
API-Änderungen
- Konstanten für Haltestellengründe hinzugefügt, die von
WorkInfo.stopReason
undListenableWorker.stopReason
zurückgegeben werden (I0cc00)
Version 2.9.0-alpha02
26. Juli 2023
androidx.work:work-*:2.9.0-alpha02
wird freigegeben. 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 von einem Worker selbst mit der MethodegetStopReason()
oder vonWorkInfo
mitgetStopReason()
abgefragt werden.
API-Änderungen
- „
stopReason
“ wurde „WorkInfo
“ hinzugefügt. Sie stelltstopReason
nach der Ausführung des Workers zur Verfügung. Dies kann in nutzungsfreundlicher Weise hilfreich sein, umstopReason
zu melden, da die App selbst sehr schnell beendet werden könnte, sobald ein Worker angehalten wurde. (I21386) - Ermöglicht es, die Uhr über die Konfiguration festzulegen und die Ausführungsabfolge von Worker-Tests zu steuern. (Ic586e)
- Zu
ListenableWorker
wurde die MethodegetStopReason()
hinzugefügt, die einen Hinweis darauf gibt, warum der Worker angehalten wurde. (I07060) WorkManagerTestInitHelper#closeWorkDatabase()
wurde hinzugefügt, um die Warnung von Closeguard über gehackte Ressourcen zu vermeiden. (Ia8d49)
Fehlerkorrekturen
- Die Möglichkeit zum Umgehen von
overrideNextScheduleTime
mitTestDriver
wurde hinzugefügt und Probleme mit der Testbarkeit wurden behoben. (IC2905)
Version 2.9.0-alpha01
7. Juni 2023
androidx.work:work-*:2.9.0-alpha01
wird freigegeben. Version 2.9.0-alpha01 enthält diese Commits.
Neue Funktionen
- Beobachtbarkeit über
Flow
Sek. Anstelle vonLiveData
kann der Fortschritt des Workers jetzt mithilfe von Flow überWorkManager.getWorkInfosFlow
und ähnliche Methoden beobachtet werden. - Präzise Zeitplanung der regelmäßigen Mitarbeiter über
setNextScheduleTimeOverride
. Dies ermöglicht die dynamische Berechnung des nächsten regelmäßigen Arbeitsplans, der verwendet werden kann, um erweiterte Funktionen wie adaptive Aktualisierungszeiten, benutzerdefiniertes Wiederholungsverhalten oder die Ausführung eines Newsfeed-Workers zu implementieren, bevor der Nutzer jeden Morgen ohne Drift aufwacht. Mit diesen Methoden sollten SieExistingPeriodicWorkPolicy.UPDATE
verwenden, um zu vermeiden, dass ein derzeit ausgeführter Worker bei der Planung des nächsten Workers abgebrochen wird. WorkManager
testet mit Threading, die der Produktion entsprechen.ExecutorsMode.PRESERVE_EXECUTORS
kann verwendet werden, um die inConfiguration
festgelegten Executors zu erhalten und den echten Hauptthread zu verwenden.- Koroutinen-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, was für Tests nützlich sein kann. (Ia00b6, b/209145335) work-runtime-ktx
ist jetzt leer.CoroutineWorker
und andere Kotlin-spezifische Dienstprogramme sind jetzt im Hauptartefakt vonwork-runtime
verfügbar. (I71a9a)setNextScheduleTimeOverride
-Methode hinzugefügt, die eine genaue Einrichtung regelmäßiger Arbeitspläne ermöglicht (I3b4da)getEarliestRunTimeMillis
wurde ingetNextScheduleTimeMillis
umbenannt. (I2bd7a)- Informationen zur nächsten geplanten Ausführung werden zu
WorkInfo
hinzugefügt. (I797e4) - Informationen zur anfänglichen Verzögerung und Periodizität werden zu
WorkInfo
hinzugefügt. (I52f2f) - Neue Methode zur Beobachtung von Workern über Abläufe über die Methoden
getWorkInfosByTagFlow
,getWorkInfoByIdFlow
,getWorkInfosForUniqueWorkFlow
,getWorkInfosFlow
(If122a) - Fehlende
@RequiresApi(...)
-Annotationen zu den Konstruktoren und Attributen von Einschränkungen hinzugefügt. Sie sind jetzt an den entsprechenden Anmerkungen in Settern inConstraints.Builder
ausgerichtet, die in frühen Versionen vonWorkManager
vorhanden waren. (I6d7d2) WorkManager
hat jetzt ein separates Limit für Inhalts-URI-Worker, um ihnen garantierte Slots inJobScheduler
zuzuweisen, um zu verhindern, dass unter hoher Auslastung fehlende Inhaltsaktualisierungen fehlen. Limit kann überConfiguration.Builder.setContentUriTriggerWorkersLimit
konfiguriert werden. (Ic128f)- Einschränkungen werden zu
WorkInfo
hinzugefügt. (I162c0)
Version 2.8
Version 2.8.1
22. März 2023
androidx.work:work-*:2.8.1
wird freigegeben. Version 2.8.1 enthält diese Commits.
Fehlerkorrekturen
- Ein ANR-Fehler in
RescheduleReceiver
wurde behoben, der zuvor zwei gleichzeitige Broadcasts nicht richtig verarbeitet hat. (b/236906724)
Version 2.8.0
8. Februar 2023
androidx.work:work-*:2.8.0
wird freigegeben. Version 2.8.0 enthält diese Commits.
Wichtige Änderungen seit Version 2.7.0
Neue Funktionen
- Es wurde eine Möglichkeit hinzugefügt,
WorkRequests
auf unaufdringliche Weise zu aktualisieren, wodurch die ursprüngliche Warteschlangenzeit, Verkettung usw. erhalten bleibt. Weitere Informationen finden Sie im detaillierten Blogpost zu dieser Funktion sowie in der Javadocs fürWorkManager.updateWork
undExistingPeriodicWorkPolicy.UPDATE
.
API-Änderungen
WorkManager.updateWork
wurde hinzugefügt, um die Arbeit zu aktualisieren, bei der die ursprüngliche Warteschlangenzeit und die Verkettung beibehalten wurden.(I9a248, b/219446409)ExistingPeriodicWorkPolicy.UPDATE
wurde hinzugefügt. Mit dieser Richtlinie kann ein regelmäßiges Werk mit dem Namen aktualisiert werden. Sie ähnelt der vorhandenenREPLACE
, ist jedoch weniger aufdringlich: Ein Worker, der gerade ausgeführt wird, wird nicht abgebrochen, und er behält die Warteschlangenzeit bei. Die anfängliche Verzögerung und der Zeitraum werden anhand der ursprünglichen Warteschlangenzeit und nicht anhand der Aktualisierungszeit berechnet.REPLACE
wurde eingestellt, um die Verwechslungen zwischenREPLACE
undUPDATE
mit ähnlichen Namen zu verringern. Wenn Sie die vorherige Semantik vonREPLACE
beibehalten möchten, können Sie die neu hinzugefügteCANCEL_AND_REENQUEUE
verwenden, die mitREPLACE
identisch ist. (I985ed, b/219446409)- Es wurde die Möglichkeit hinzugefügt, Planungsausnahmen abzufangen, die
Consumer<Throwable>
über setSchedulingExceptionHandler) bereitstellen. - Es wurde die Möglichkeit hinzugefügt,
Consumer<Throwable>
über setInitializationExceptionHandler bereitzustellen, um festzustellen, ob beim Initialisieren von WorkManager Probleme aufgetreten sind. - Inline-Hilfsprogramme 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 RxJava 3 hat jetztsetForeground
, dieCompletable
zurückgibt. Diese kann anstelle vonsetForegroundInfoAsync
verwendet werden, dieListenableFuture
zurückgibt.- Bei
RxWorker
für RxJava 2 und RxJava 3 gibtgetForegroundInfo
den WertSingle
zurück, der anstelle vongetForegroundInfoAsync
verwendet werden kann, dasListenableFuture
zurückgibt. (b/203851459) - Einschränkungen können jetzt direkt anstelle von
Constraints.Builder
erstellt werden, was für Kotlin-Nutzer praktisch ist. (Idc390, b/137568653) - Es besteht jetzt die Möglichkeit zu prüfen, ob
WorkManager
initialisiert wurde. Außerdem wurde eine neuegetConfiguration()
API für Bibliotheksentwickler hinzugefügt, um die Konfiguration abzurufen, mit derWorkManager
initialisiert wurde. (I6eff3, b/212300336)
Fehlerkorrekturen
- Ein Problem mit dem gierigen Planer wurde behoben, der verhinderte, dass Worker unter Last sofort ausgeführt werden konnten. (I9686b, b/248111307)
@RequiresPermission
wurde APIs hinzugefügt, für die ab SDK 33 die BerechtigungPOST_NOTIFICATIONS
gewährt werden muss. (Ie542e, b/238790278)- Leiten Sie Stornierungen in der
CoroutineScope
an dieListenableFuture
weiter, wenn SiesuspendCancellableCoroutine
verwenden.
Version 2.8.0-rc01
7. Dezember 2022
androidx.work:work-*:2.8.0-rc01
wird freigegeben. Version 2.8.0-rc01 enthält diese Commits.
Neue Funktionen
- In diesem Release gibt es keine neuen Funktionen. Dies ist hauptsächlich ein Versions-Bump.
Version 2.8.0-beta02
9. November 2022
androidx.work:work-*:2.8.0-beta02
wird freigegeben. Version 2.8.0-beta02 enthält diese Commits.
Fehlerkorrekturen
- Fehler bei der
equals
-Methode inWorkInfo
behoben, bei der bisher keine Informationen zur neuen Generierung berücksichtigt wurden. (4.977 cm3)
Version 2.8.0-beta01
5. Oktober 2022
androidx.work:work-*:2.8.0-beta01
wird freigegeben. Version 2.8.0-beta01 enthält diese Commits.
Fehlerkorrekturen
- Ein Problem mit dem gierigen Planer wurde behoben, der verhinderte, dass Worker unter Last sofort ausgeführt werden konnten. (I9686b, b/248111307)
Version 2.8.0-alpha04
7. September 2022
androidx.work:work-*:2.8.0-alpha04
wird freigegeben. Version 2.8.0-alpha04 enthält diese Commits.
API-Änderungen
WorkerInfo.getGeneration()
undWorkerParameters.getGeneration()
wurden hinzugefügt, die die Generation eines Workers zurückgeben. Ein Worker hat mehrere Generationen, wenn er überWorkManager.updateWork
oderWorkManager.enqueueUniquePeriodicWork
mitExistingPeriodicWorkPolicy.UPDATE
aktualisiert wurde. Wenn der Worker gerade ausgeführt wird, kann diese Methode bei einer Aktualisierung während der Ausführung des Workers eine neuere Generation von der des aktuell ausgeführten Workers zurückgeben. (I665c5, b/219446409) (I128a9, b/219446409)InitializationExceptionHandler
, ein Ausnahme-Handler, mit dem ermittelt werden kann, ob beim Initialisieren vonWorkManager
Probleme aufgetreten sind, wurde hinzugefügt. (I061de)
Version 2.8.0-alpha03
10. August 2022
androidx.work:work-*:2.8.0-alpha03
wird freigegeben. Version 2.8.0-alpha03 enthält diese Commits.
Neue Funktionen
- Es wurde eine Möglichkeit hinzugefügt,
WorkRequests
auf unaufdringliche Weise zu aktualisieren, wodurch die ursprüngliche Warteschlangenzeit, Verkettungen usw. erhalten bleiben. Weitere Informationen finden Sie unterWorkManager.updateWork
undExistingPeriodicWorkPolicy.UPDATE
.
API-Änderungen
WorkManager.updateWork
wurde hinzugefügt, um die Arbeit zu aktualisieren, bei der die ursprüngliche Warteschlangenzeit und die Verkettung beibehalten wurden.(I9a248, b/219446409)ExistingPeriodicWorkPolicy.UPDATE
wurde hinzugefügt. Mit dieser Richtlinie kann ein regelmäßiges Werk mit dem Namen aktualisiert werden. Sie ähnelt der vorhandenenREPLACE
, ist jedoch weniger aufdringlich: Ein Worker, der gerade ausgeführt wird, wird nicht abgebrochen, und er behält die Warteschlangenzeit bei. Die anfängliche Verzögerung und der Zeitraum werden anhand der ursprünglichen Warteschlangenzeit und nicht anhand der Aktualisierungszeit berechnet.REPLACE
wurde eingestellt, um eine Verwechslung zwischenREPLACE
undUPDATE
mit ähnlichen Namen zu vermeiden. Wenn Sie die vorherige Semantik vonREPLACE
beibehalten möchten, können Sie die neu hinzugefügteCANCEL_AND_REENQUEUE
verwenden, die mitREPLACE
identisch ist. (I985ed, b/219446409)- Definieren Sie eine
SchedulingExceptionHandler
, um Planungsausnahmen abzufangen. (I033eb) - Inline-Hilfsprogramme 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 ab SDK 33 die Berechtigung POST_NOTIFICATIONS benötigt wird. (Ie542e, b/238790278)
Version 2.8.0-alpha02
6. April 2022
androidx.work:work-*:2.8.0-alpha02
wird freigegeben. Version 2.8.0-alpha02 enthält diese Commits.
API-Änderungen
- Einschränkungen können jetzt direkt anstelle des Builders erstellt werden, was für Kotlin-Nutzer praktisch ist. (Idc390, b/137568653)
- Es besteht jetzt die Möglichkeit zu prüfen, ob
WorkManager
initialisiert wurde. Außerdem wurde eine neuegetConfiguration()
API für Bibliotheksentwickler hinzugefügt, um die Konfiguration abzurufen, mit derWorkManager
initialisiert wurde. (I6eff3, b/212300336)
Version 2.8.0-alpha01
12. Januar 2022
androidx.work:work-*:2.8.0-alpha01
wird freigegeben. Version 2.8.0-alpha01 enthält diese Commits.
API-Änderungen
- Die Hilfsmethoden
WorkQuery.fromStates
,WorkQuery.fromUniqueWorkNames
undWorkQuery.fromTags
wurden hinzugefügt, um WorkQuery direkt zu erstellen. (If48f2, b/199919736) - Es wurden experimentelle BuildCompat-Methoden für zukünftige SDKs hinzugefügt (Iafd82, b/207528937)
getForegroundInfo
zuWorker
hinzufügen. (Ic1ead)- Die Hilfsmethoden
WorkQuery.fromIds
zum direkten Erstellen von WorkQuery-IDs wurden hinzugefügt. (Ie5bdf, b/199919736) - In RxWorker gibt es jetzt
setForeground
, dieCompletable
zurückgibt, die anstelle vonsetForegroundInfoAsync
, dieListenableFuture
zurückgibt, verwendet werden kann. (I85156) - In RxWorker für RxJava 2 gibt es jetzt
getForegroundInfo
, dieSingle
zurückgibt, die anstelle vongetForegroundInfoAsync
verwendet werden kann, dieListenableFuture
zurückgibt. (I21c91, b/203851459) - In RxWorker für RxJava 3 gibt es jetzt
getForegroundInfo
, dasSingle
zurückgibt, das anstelle vongetForegroundInfoAsync
verwendet werden kann, dasListenableFuture
zurückgibt. (I1ca8a) - In RxWorker gibt es jetzt
setForeground
, dieCompletable
zurückgibt, die anstelle vonsetForegroundInfoAsync
, dieListenableFuture
zurückgibt, verwendet werden kann. (I992a3, b/203851459)
Fehlerkorrekturen
- Leiten Sie Stornierungen in der
CoroutineScope
an dieListenableFuture
weiter, wenn SiesuspendCancellableCoroutine
verwenden. (I77e63)
Version 2.7
Version 2.7.1
17. November 2021
androidx.work:work-*:2.7.1
wird freigegeben. Version 2.7.1 enthält diese Commits.
Fehlerkorrekturen
- Stornierungen in
CoroutineScope
werden anListenableFuture
weitergegeben, wennsuspendCancellableCoroutine
verwendet wird. (I77e63) - Eine Ausnahme wird sofort ausgegeben, wenn verzögerte Arbeitsanfragen als beschleunigt markiert werden. bef1762
Version 2.7.0
13. Oktober 2021
androidx.work:work-*:2.7.0
wird freigegeben. 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 von Diensten im Vordergrund in Android 12 zu beheben.Wenn Sie
setExpedited(...)
verwenden, delegiert WorkManager ab Android 12 beschleunigte Jobs in JobScheduler. Bei früheren Android-Versionen wird gleichzeitig Abwärtskompatibilität bereitgestellt, indem ein Dienst im Vordergrund zugewiesen wird.
Version 2.7.0-rc01
29. September 2021
androidx.work:work-*:2.7.0-rc01
wird freigegeben. Version 2.7.0-rc01 enthält diese Commits.
Diese Version ist mit androidx.work:work-*:2.7.0-beta01
identisch.
Version 2.7.0-beta01
1. September 2021
androidx.work:work-*:2.7.0-beta01
wird freigegeben. Version 2.7.0-beta01 enthält diese Commits.
Neue Funktionen
- Reduzieren Sie SQLite-Konflikte mit mehreren Prozessen bei der Initialisierung von WorkManager.
API-Änderungen
- Entferne
@ExperimentalExpeditedWork
APIs, da die zugrunde liegenden Plattform-APIs für Android 12 (S) stabil sind. (aosp/1792806)
Fehlerkorrekturen
- Geben Sie eine bessere Fehlermeldung für beschleunigte Worker an, die
getForegroundInfoAsync()
nicht implementieren. (aosp/1809376)
Version 2.7.0-alpha05
21. Juli 2021
androidx.work:work-*:2.7.0-alpha05
wird freigegeben. 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 freigegeben.
Diese Version enthält auch die Änderungen gegenüber dem Release 2.6.0-beta01.
API-Änderungen
ListenableWorker.setForegroundAsync()
wird nicht mehr eingestellt.- Wir empfehlen, nach Möglichkeit die
WorkRequest.Builder.setExpedited(...)
API zu verwenden. In Fällen, in denen die App nicht den Einschränkungen für Dienste im Vordergrund unterliegt, können Entwickler dieListenableWorker.setForegroundAsync()
API verwenden. - Wenn
ListenableWorker.setForegroundAsync()
aufgerufen wird und für die App Einschränkungen für Dienste im Vordergrund gelten, wird die ForegroundServiceStartNotAllowedException ausgelöst.
Fehlerkorrekturen
- Wenn beschleunigte Aufträge verschoben werden, werden 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 freigegeben. Version 2.7.0-alpha03 enthält diese Commits.
Neue Funktionen
Von WorkManager
2.6.0-alpha02
: Fügt Unterstützung für Worker hinzu, die in jedem Prozess ausgeführt werden können. (Iaf200)Aus WorkManager
2.6.0-alpha02
:RemoteCoroutineWorker
wurde hinzugefügt. Dabei handelt es sich um eine Implementierung vonRemoteListenableWorker
, die an einen Remote-Prozess gebunden werden kann. (I30578)
API-Änderungen
- Von WorkManager
2.6.0-alpha02
:Die NetzwerkeinschränkungTEMPORARILY_UNMETERED
wird jetzt unterstützt. (I08d5e) - Ab WorkManager
2.6.0-alpha02
:Multi-Prozess-Worker-Unterstützung fürsetProgressAsync()
. (Ib6d08) - In WorkManager
2.6.0-alpha02
:Machen SieWorkManagerInitializer
öffentlich, damit andereandroidx.startup.Initializer
s diese als Abhängigkeiten verwenden können. (I5ab11)
Version 2.7.0-alpha02
10. März 2021
androidx.work:work-*:2.7.0-alpha02
wird freigegeben. Version 2.7.0-alpha02 enthält diese Commits.
Fehlerkorrekturen
- Mache die Veränderlichkeit von
PendingIntent
explizit, 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 freigegeben. 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.Anwendungen 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 Diensts im Vordergrund gebunden waren, besser zu unterstützen, können Anwendungen daher
WorkRequest
s als beschleunigt kennzeichnen.Diese API ist ein Ersatz für die
setForegroundAsync(...)
undsetForeground(...)
APIs, die eingestellt wurden.Bei Verwendung von
setExpedited(...)
delegiert WorkManager beschleunigte Jobs inJobScheduler
ab Android 12. Gleichzeitig wird Abwärtskompatibilität auf früheren Android-Versionen bereitgestellt, indem an Dienste im Vordergrund delegiert wird.
API-Änderungen
- Unterstützung für schnellere
WorkRequest
s hinzufügen.
Version 2.6.0
Version 2.6.0
1. September 2021
androidx.work:work-*:2.6.0
wird freigegeben. 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 du in der Vergangenheit die Verwendung vontools:node="remove"
ContentProvider
zum Initialisieren von WorkManager verwendet hast, musst du stattdessen so vorgehen.<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" />
Worker werden in beliebigen Prozessen ausgeführt. (Iaf200)
Ein
RemoteCoroutineWorker
wurde hinzugefügt. Das ist eine Implementierung von RemoteListenableWorker, die eine Bindung an einen Remote-Prozess herstellen kann. (I30578)
Version 2.6.0-rc01
4. August 2021
androidx.work:work-*:2.6.0-rc01
wird freigegeben. Version 2.6.0-rc01 enthält diese Commits.
Diese Version ist mit androidx.work:work-*:2.6.0-beta02
identisch.
Version 2.6.0-beta02
21. Juli 2021
androidx.work:work-*:2.6.0-beta02
wird freigegeben. Version 2.6.0-beta02 enthält diese Commits.
Fehlerkorrekturen
- Die Bindung zwischen
RemoteWorkManager
undRemoteWorkManagerService
wird jetzt korrekt aufgehoben. Dadurch kannRemoteWorkManagerService
ordnungsgemäß bereinigt werden. aosp/1730694 - Die Bindung zwischen
RemoteListenableWorker
undRemoteWorkerService
wird jetzt korrekt aufgehoben. Dadurch kannRemoteWorkerService
ordnungsgemäß bereinigt werden. aosp/1743817 ForceStopRunnable
wird jetzt nur noch im primären Anwendungsprozess ausgeführt. Dies ist eine Optimierung, mit der Ressourcenkonflikte für Anwendungen vermieden werden, die mehrere Prozesse verwenden. aosp/1749180, aosp/1761729
Version 2.6.0-beta01
2. Juni 2021
androidx.work:work-*:2.6.0-beta01
wird freigegeben. Version 2.6.0-beta01 enthält diese Commits.
Diese Version enthält einige kleinere Verbesserungen der Dokumentation. Der Release ist weitgehend identisch mit 2.6.0-alpha02.
Version 2.6.0-alpha02
21. April 2021
androidx.work:work-*:2.6.0-alpha02
wird freigegeben. Version 2.6.0-alpha02 enthält diese Commits.
Neue Funktionen
Bietet Unterstützung für Worker, die in beliebigen Prozessen ausgeführt werden können. (Iaf200)
Ein
RemoteCoroutineWorker
wurde hinzugefügt. Dies ist eine Implementierung vonRemoteListenableWorker
, die an einen Remote-Prozess gebunden werden kann. (I30578)
API-Änderungen
- Die Netzwerkeinschränkung
TEMPORARILY_UNMETERED
wird jetzt unterstützt. (I08d5e) - Multi-Prozess-Worker-Unterstützung für
setProgressAsync()
. (Ib6d08) - Machen Sie
WorkManagerInitializer
öffentlich, damit andereandroidx.startup.Initializer
s diese als Abhängigkeiten verwenden können. (I5ab11)
Version 2.6.0-alpha01
24. März 2021
androidx.work:work-*:2.6.0-alpha01
wird freigegeben. Version 2.6.0-alpha01 enthält diese Commits.
Neue Funktionen
WorkManager
verwendet jetztandroidx.startup
, um WorkManager zu initialisieren. Zuvor wurde diese Änderung vonandroidx.work.impl.WorkManagerInitializer
vorgenommen. (aosp/1608813)Wenn Sie in der Vergangenheit
tools:node="remove"
ContentProvider
zum Initialisieren des Prozesslebenszyklus verwendet haben, müssen Sie stattdessen so vorgehen.<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üge eine
Result.getOutputData()
API hinzu, die denoutputData
von ListenableWorker zurückgibt. (Ie51e3)
Fehlerkorrekturen
- Fügen Sie eine Problemumgehung für einen OEM-Fehler hinzu, der dazu führt, dass bei Verwendung von
AlarmManager
APIs einSecurityException
ausgegeben wird. (aosp/1587518)
Version 2.5.0
Version 2.5.0
27. Januar 2021
androidx.work:work-*:2.5.0
wird freigegeben. 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. Dies führt zu Leistungssteigerungen, da die Planung von Arbeitsanfragen in einem einzigen Prozess vereinheitlicht 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 IhreWorkRequest
s auch mit RemoteWorkManager verwalten. RemoteWorkManager wendet sich immer an den zuständigen Prozess. Der Prozess-Planer wird auch im 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 Meldung gelöscht wird.WorkManager
sorgt jetzt dafür, dass für jede einzelneWorkRequest
Ersatzjobs vorhanden sind, wenn eineApplication
durch den Abgleich von Jobs initialisiert wird. Dies verbessert die Zuverlässigkeit der Jobausführung erheblich. (b/172475041, aosp/1489577) WorkManager
begrenzt das Datenbankwachstum, indem die Pufferdauer reduziert wird, dieWorkRequest
s nach Abschluss einesWorkRequest
-Vorgangs verfolgt werden. Die Dauer betrug zuvor7
Tage. Sie wurde auf1
Tag + die Dauer von keepResultsForAtLeast reduziert. (aosp/1419708)TestListenableWorkerBuilder
unterstützt jetzt die reifizierte Klasse, dieListenableWorker
erweitert, um das Testen zu vereinfachen. (aosp/1443299, b/169787349)- Der WorkManager Inspector ist jetzt bei Verwendung von Android Studio Arctic Fox verfügbar.
Version 2.5.0-rc01
13. Januar 2021
androidx.work:work-*:2.5.0-rc01
wird freigegeben. Version 2.5.0-rc01 enthält diese Commits.
Fehlerkorrekturen
- Es wurde ein Fehler behoben, bei dem
getWorkInfosLiveData
nicht korrekt ungültig gemacht wurde, nachdem Entitäten bei Verwendung derWorkQuery
-basierten API aktualisiert wurden. (aosp/1540566, b/173769028) - Es wurde ein Fehler behoben, bei dem Datenbanktransaktionen in einigen seltenen Fällen nicht als erfolgreich markiert wurden. Dies führt bei einigen Motorola-Geräten zu Problemen. (aosp/1535368, b/175944460)
- Es wurde ein Fehler behoben, durch den
NoSuchElementException
s beim Aufheben der Bindung an einen inaktiven Prozess ignoriert wurden. (aosp/1530589) - Verbessern Sie
ConstraintTrackingWorker
so, dass einListenableWorker
nur beendet wird, wenn er nicht bereits beendet wurde. (aosp/1496844, b/172946965) - Aktualisieren der androidx.work-Bibliotheken für Java 8 (Ibd2f2)
Version 2.5.0-beta02
2. Dezember 2020
androidx.work:work-*:2.5.0-beta02
wird freigegeben. Version 2.5.0-beta02 enthält diese Commits.
Fehlerkorrekturen
- Es wurde ein Fehler in
androidx.work:work-multiprocess
behoben, bei dem WorkManager den aufrufenden Thread versehentlich blockierte, wenn er versuchte, sich an den festgelegten Prozess zu binden. (aosp/1475538) - Es wurde ein Fehler behoben, bei dem
PeriodicWorkRequest
-Werte nicht richtig abgeglichen wurden. (b/172475041, aosp/1489577) - Es wurde eine Problemumgehung für einen Plattformfehler hinzugefügt, der beim Beenden des Diensts im Vordergrund bei Verwendung der
setForeground*
APIs aufgetreten ist. (b/170924044, aosp/1489901)
Version 2.5.0-beta01
28. Oktober 2020
androidx.work:work-*:2.5.0-beta01
wird freigegeben. Version 2.5.0-beta01 enthält diese Commits.
Neue Funktionen
WorkManager
drosselt automatisch die Anzahl derWorkRequest
s, die vom laufenden Planer aufgenommen werden können. Die Anfragen werden weiterhin in FIFO-Reihenfolge ausgeführt. (aosp/1455228)WorkManager
versucht eine Wiederherstellung, wenn sich der Datenspeicher der Anwendung in einem fehlerhaften Zustand befindet. (aosp/1463103)
Fehlerkorrekturen
- Wenn
ListenableWorker
s unterbrochen werden, markieren Sie sie sofort alsENQUEUED
, damit sie später verschoben werden können. (aosp/1455618, b/170273988)
Version 2.5.0-alpha03
14. Oktober 2020
androidx.work:work-*:2.5.0-alpha03
wird freigegeben. Version 2.5.0-alpha03 enthält diese Commits.
API-Änderungen
TestListenableWorkerBuilder
undTestWorkerBuilder
verwenden keine Rohdatentypen. (I883ad, b/169787349)
Fehlerkorrekturen
- Verwenden Sie
ApplicationInfo
, um den Namen des Standardanwendungsprozesses zu ermitteln. (b/168716641 und aosp/1429950) - Korrigieren Sie die Sichtbarkeitsregeln für
RemoteWorkManager
undRemoteWorkContinuation
. Diese APIs sind nicht mehr als@Restricted
gekennzeichnet. (aosp/1432091) - Korrigieren Sie die Proguard-Regeln für
:work:work-multiprocess
. (aosp/1432091) - Verbessern Sie den Benachrichtigungslebenszyklus für lang andauernde Aufgaben, die an einen Dienst im Vordergrund gebunden sind. (b/168502234, aosp/1431331)
Version 2.5.0-alpha02
16. September 2020
androidx.work:work-*:2.5.0-alpha02
wird freigegeben. Version 2.5.0-alpha02 enthält diese Commits.
Neue Funktionen
- Fügen Sie WorkQuery eine API hinzu, um
id
s zum Abfragen vonWorkInfo
s verwenden zu können. (aosp/1412372, b/157335295) - WorkManager unterstützt besser Anwendungen, die mehrere Prozesse mit einem neuen Artefakt (
androidx.work:work-multiprocess:*
) verwenden. Dieses neue Artefakt hilft, einige Probleme zu lösen, die bei großen Apps auftreten, darunter:- WorkManager muss in der Regel bei jedem Anwendungsprozess initialisiert werden. Das ist nicht großartig, da es vermehrt SQLite-Konflikte gibt, was wiederum andere Probleme verursacht. WorkManager verfügt jetzt über neue APIs, mit denen mithilfe von
Configuration#setDefaultProcessName(processName)
ein primärer Anwendungsprozess festgelegt werden kann.processName
ist ein voll qualifizierter Prozessname und hat das FormatpackageName:processName
(z.B.com.example:remote
). - Neue APIs:
RemoteWorkManager
undRemoteWorkContinuation
fürenqueue
-,cancel
- undquery
-Arbeitsanfragen. Diese APIs enthalten keineLiveData
-Varianten, um SQLite-Konflikte zwischen mehreren Prozessen zu vermeiden. Alle Aufrufe anenqueue
,cancel
undquery
werden mithilfe von AIDL an einenprimary
-Anwendungsprozess weitergeleitet und geben eine flüssigeListenableFuture
zurück. (aosp/1392657, aosp/1411210, aosp/1412215, aosp/1417713)
- WorkManager muss in der Regel bei jedem Anwendungsprozess initialisiert werden. Das ist nicht großartig, da es vermehrt SQLite-Konflikte gibt, was wiederum andere Probleme verursacht. WorkManager verfügt jetzt über neue APIs, mit denen mithilfe von
API-Änderungen
- WorkManager bereinigt nun abgeschlossene
WorkRequest
s, die keine unvollständigen Abhängigkeiten haben, nun aggressiver. Die Pufferdauer wurde von7
Tagen zu1
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 freigegeben. Version 2.5.0-alpha01 enthält diese Commits.
Neue Funktionen
- Änderungen an internen APIs, durch die wir in Zukunft bessere Tools mit
WorkManager
bereitstellen können. Wir halten Sie auf dem Laufenden.
Fehlerkorrekturen
SecurityException
-Fehler beim Erfassen des Netzwerkstatus auf einigen Geräten verarbeiten (aosp/1396969)
Externer Beitrag
- Probleme mit der Dokumentation für
ArrayCreatingInputMerger
von Zac Sweers (GitHub/43) wurden behoben.
Version 2.4.0
Version 2.4.0
22. Juli 2020
androidx.work:work-*:2.4.0
wird freigegeben. Version 2.4.0 enthält diese Commits.
Wichtige Änderungen seit Version 2.3.0
- Der In-Process-Planer von
WorkManager
ist jetzt leistungsfähiger. Bisher hat der laufendeScheduler
nur die Ausführung von Aufgaben berücksichtigt, die nicht verzögert waren und deren Einschränkungen erfüllt wurden. Jetzt verfolgt der laufende PlanerWorkRequest
s, die in Zukunft ausgeführt werden könnten, einschließlich PeriodicWorkRequests. Für den laufendenScheduler
gelten auch keine Zeitplanlimits (sie sind aber weiterhin auf die Größe des von WorkManager verwendetenExecutor
) beschränkt. Das bedeutet, dass die Anwendung jetzt wesentlich mehr WorkRequests ausführen kann, wenn sie im Vordergrund ausgeführt wird. Für die Verwaltung der Ausführung verzögerter Arbeiten im Vordergrund wurde außerdem ein neues konfigurierbaresRunnableScheduler
-Objekt inWorkManager
eingeführt. (aosp/1185778) - WorkManager unterstützt jetzt RxJava 3. Für die Verwendung von RxJava 3 sollten Sie die folgende Abhängigkeit einbeziehen:
implementation "androidx.work:work-rxjava3:2.4.0"
. (aosp/1277904) - Es wurde die Möglichkeit hinzugefügt,
WorkInfo
-Werte mithilfe vonWorkQuery
abzufragen. Dies ist nützlich, wenn EntwicklerWorkInfo
s mithilfe einer Kombination mehrerer Attribute abfragen möchten. Weitere Informationen findest du unterWorkQuery.Builder.fromStates(...)
,WorkQuery.Builder. fromTags(...)
oderWorkQuery.Builder.fromUniqueWorkNames(...)
. (aosp/1253230, b/143847546) Fügen Sie die Möglichkeit hinzu, Diagnosedaten von
WorkManager
anzufordern:adb shell am broadcast -a "androidx.work.diagnostics.REQUEST_DIAGNOSTICS" -p "<your_app_package_name>"
Hier finden Sie viele nützliche Informationen, darunter:
- WorkRequests, die in den letzten 24 Stunden abgeschlossen wurden.
- Derzeit ausgeführte WorkRequests
- Geplante WorkRequests. (aosp/1235501)
Fügen Sie
ExistingWorkPolicy.APPEND_OR_REPLACE
hinzu. Das ähneltAPPEND
, ersetzt jedoch eine Kette, bei der die Voraussetzungen abgebrochen wurden oder nicht erfüllt wurden. (b/134613984, aosp/1199640)Möglichkeit zum Hinzufügen eines benutzerdefinierten
RunnableScheduler
bereitstellen, um WorkRequests zu verfolgen, die in Zukunft ausgeführt werden müssen. Dies wird vom laufenden Planer verwendet. (aosp/1203944)Bei Verwendung von
DelegatingWorkerFactory
wird das dynamische Hinzufügen von Factorys zum Delegieren unterstützt. (b/156289105, aosp/1309745)Richten Sie das Tracking für
BATTERY_NOT_LOW
-Einschränkungen stärker mit der Plattform aus. (aosp/1312583)Der Prozess-Planer verwendet jetzt bessere APIs, um den Namen des Prozesses zu bestimmen. Dies ist nützlich, um Anwendungen, die mehrere Prozesse verwenden, besser zu unterstützen. (aosp/1324732)
Neue Lint-Regeln, die Folgendes erzwingen:
- Verwendung des rechten
foregroundServiceType
bei Verwendung vonsetForegroundAsync()
APIs. (b/147873061 und aosp/1215915) - Angeben von JobScheduler-IDs, die WorkManager verwenden soll, wenn JobService APIs direkt verwendet werden. aosp/1223567
- Es wurde eine neue Lint-Regel hinzugefügt, die dafür sorgt, dass
ListenableWorker
Implementierungen jetzt den Wertpublic
haben, wenn die standardmäßigeWorkerFactory
verwendet wird. (aosp/1291262)
- Verwendung des rechten
Aufrufe an
setForegroundAsync()
, die nicht vor Abschluss vonListenableWorker
abgeschlossen werden, werden jetzt über einIllegalStateException
auf der zurückgegebenenListenableFuture
signalisiert. (aosp/1262743)Es wurde ein Fehler behoben, bei dem
ForegroundService
nicht angehalten wurde, nachdem eineWorker
im Vordergrund unterbrochen wurde. (b/155579898 und aosp/1302153)Fehler behoben, bei dem
WorkManager
versucht, mehrere Instanzen einerWorker
auszuführen, die an einen Dienst im Vordergrund gebunden ist (b/156310133, aosp/1309853)
Version 2.4.0-rc01
24. Juni 2020
androidx.work:work-*:2.4.0-rc01
wird freigegeben. Version 2.4.0-rc01 enthält diese Commits.
Fehlerkorrekturen
- Der Prozess-Planer verwendet jetzt bessere APIs, um den Namen des Prozesses zu bestimmen. Dies ist nützlich, um Anwendungen, die mehrere Prozesse verwenden, besser zu unterstützen. (aosp/1324732)
Version 2.4.0-beta01
20. Mai 2020
androidx.work:work-gcm:2.4.0-beta01
, androidx.work:work-runtime:2.4.0-beta01
, androidx.work:work-runtime-ktx:2.4.0-beta01
, androidx.work:work-rxjava2:2.4.0-beta01
und androidx.work:work-testing:2.4.0-beta01
wurden veröffentlicht. Version 2.4.0-beta01 enthält diese Commits.
Fehlerkorrekturen
- Es wurde ein Fehler behoben, bei dem
ForegroundService
nicht angehalten wurde, nachdem eineWorker
im Vordergrund unterbrochen wurde. (b/155579898 und aosp/1302153) - Fehler behoben, bei dem
WorkManager
versucht, mehrere Instanzen einerWorker
auszuführen, die an einen Dienst im Vordergrund gebunden sind (b/156310133, aosp/1309853) - Bei Verwendung von
DelegatingWorkerFactory
wird das dynamische Hinzufügen von Factorys zum Delegieren unterstützt. (b/156289105 und aosp/1309745) - Richten Sie das Tracking für
BATTERY_NOT_LOW
-Einschränkungen stärker mit der Plattform aus. (aosp/1312583)
Version 2.4.0-alpha03
29. April 2020
androidx.work:work-*:2.4.0-alpha03
wird freigegeben. Version 2.4.0-alpha03 enthält diese Commits.
Neue Funktionen
- WorkManager unterstützt jetzt RxJava 3. Für die Verwendung von RxJava 3 sollten Sie die folgende Abhängigkeit einbeziehen:
implementation "androidx.work:work-rxjava3:2.4.0-alpha03"
. (aosp/1277904) - Es wurde eine neue Lint-Regel hinzugefügt, die dafür sorgt, dass
ListenableWorker
Implementierungen jetzt den Wertpublic
haben, wenn die standardmäßigeWorkerFactory
verwendet wird. (aosp/1291262)
API-Änderungen
- Wenn
setProgressAsync()
aufgerufen wird, nachdem die Ausführung einerListenableWorker
abgeschlossen wurde, wird jetzt einException
über dieListenableFuture
signalisiert. (aosp/1285494) WorkQuery.Builder
ist jetzt alsfinal
markiert. (aosp/1275037)- Die
WorkQuery.Builder
-Factory-MethodenwithStates
,withTags
undwithUniqueWorkNames
wurden infromStates
,fromTags
undfromUniqueWorkNames
umbenannt. (aosp/1280287)
Fehlerkorrekturen
SecurityException
-Werte werden beim Erfassen des Netzwerkstatus eines Geräts ignoriert. (b/153246136 und aosp/1280813)
Version 2.4.0-alpha02
1. April 2020
androidx.work:work-*:2.4.0-alpha02
wird freigegeben. Version 2.4.0-alpha02 enthält diese Commits.
Neue Funktionen
- Eine neue Lint-Regel wurde hinzugefügt, die warnt, wenn
WorkRequest
s sowohlConstraints.setRequiresCharging(...)
als auchConstraints.setRequiresDeviceIdle(...)
erfordert. Einige Geräte werden nie gleichzeitig aufgeladen und inaktiv. Solche Anfragen würden also seltener als erwartet ausgeführt werden. (aosp/1253840)
API-Änderungen
Es wurde die Möglichkeit hinzugefügt,
WorkInfo
-Werte mithilfe vonWorkQuery
abzufragen. Dies ist nützlich, wenn EntwicklerWorkInfo
s mithilfe einer Kombination mehrerer Attribute abfragen möchten. Weitere Informationen findest du unterWorkQuery.Builder withStates(...)
,WorkQuery.Builder withTags(...)
oderWorkQuery.Builder withUniqueWorkNames(...)
. (aosp/1253230, b/143847546)Aufrufe an
setForegroundAsync()
, die nicht vor Abschluss vonListenableWorker
abgeschlossen werden, werden jetzt über einIllegalStateException
auf der zurückgegebenenListenableFuture
signalisiert. (aosp/1262743)
Fehlerkorrekturen
- Die Lint-Regel, die
PeriodicWorkRequest
s auf ungültige Intervalldauer prüft, wurde korrigiert. (aosp/1254846, b/152606442)
Version 2.4.0-alpha01
4. März 2020
androidx.work:work-*:2.4.0-alpha01
wird freigegeben. Version 2.4.0-alpha01 enthält diese Commits.
Neue Funktionen
Der In-Process-Planer von
WorkManager
ist jetzt leistungsfähiger. Bisher hat der Prozessplanungs-Planer nur die Ausführung von Aufgaben berücksichtigt, die nicht verzögert waren und deren Einschränkungen erfüllt wurden. Jetzt verfolgt der laufende PlanerWorkRequest
s, die in der Zukunft ausgeführt werden könnten, einschließlichPeriodicWorkRequest
s. Der laufende Planer berücksichtigt außerdem keine Zeitplanlimits (ist aber auf die Größe derExecutor
beschränkt, die von WorkManager verwendet wird). Das bedeutet, dass die App jetzt wesentlich mehrWorkRequest
s ausführen kann, wenn sie im Vordergrund ausgeführt wird. (aosp/1185778)Es ist jetzt möglich, Diagnosedaten über
adb shell am broadcast -a "androidx.work.diagnostics.REQUEST_DIAGNOSTICS" -p "<your_app_package_name>"
von WorkManager anzufordern. Hier finden Sie viele nützliche Informationen, darunter:- WorkRequests, die in den letzten 24 Stunden abgeschlossen wurden.
- Derzeit ausgeführte WorkRequests
- Geplante WorkRequests. (aosp/1235501)
Neue Lint-Regeln, die Folgendes erzwingen:
- Verwendung des rechten
foregroundServiceType
bei Verwendung vonsetForegroundAsync()
APIs. (b/147873061 und aosp/1215915) - Angeben von
JobScheduler
-IDs, dieWorkManager
verwenden soll, wennJobService
APIs direkt verwendet werden. (aosp/1223567)
- Verwendung des rechten
API-Änderungen
Fügen Sie
ExistingWorkPolicy.APPEND_OR_REPLACE
hinzu. Das ähneltAPPEND
, ersetzt aber eine Kette, die abgebrochene oder nicht erforderliche Voraussetzungen erfüllt. (b/134613984, aosp/1199640)Möglichkeit zum Hinzufügen eines benutzerdefinierten
RunnableScheduler
bereitstellen, umWorkRequest
s zu erfassen, die in Zukunft ausgeführt werden müssen. Dies wird vom laufenden Planer verwendet. (aosp/1203944)
Fehlerkorrekturen
setProgress()
inRxWorker
wurde verworfen, da zuvor einSingle<Void>
zurückgegeben wurde, was ein nicht möglicher Typ ist. Es wurde eine neue API-setCompletableProgress()
hinzugefügt, die stattdessen einCompletable
zurückgibt. Außerdem wurden neue Lint-Regeln hinzugefügt, die die Migration zu den neuen APIs vereinfachen. (b/150080946, aosp/1242665)
Version 2.3.4
Version 2.3.4
18. März 2020
androidx.work:work-*:2.3.4
wird freigegeben. Version 2.3.4 enthält diese Commits.
Fehlerkorrekturen
- Es wurde ein Fehler behoben, der dazu führte, dass nach Überschreiten des 10-minütigen Ausführungsfensters mehrere Instanzen eines lang andauernden
Worker
s ausgeführt wurden. (aosp/1247484, b/150553353) - Das Problem mit dem Lint
IssueRegistry
von WorkManager wurde behoben. 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 freigegeben. Version 2.3.3 enthält diese Commits.
Fehlerkorrekturen
- Ein Fehler wurde behoben, bei dem eine
Worker
-Verbindung nicht korrekt neu geplant wurde, wenn sie unterbrochen wurde. (b/150325687 und aosp/1246571)
Version 2.3.2
Version 2.3.2
19. Februar 2020
androidx.work:work-*:2.3.2
werden freigegeben. Version 2.3.2 enthält diese Commits.
Fehlerkorrekturen
- Es wurde ein Problem behoben, bei dem WorkManager in seltenen Fällen das Limit von 100 Jobs in JobScheduler überschreitet. (aosp/1226859, b/149092520)
- Fehlerkorrektur für eine Race-Bedingung in ConstraintControllers. (aosp/1220100)
- Der Lebenszyklus des Diensts im Vordergrund der Verwaltung für Worker mit langer Ausführungszeit wurde verbessert. (aosp/1226295)
- Die Verwaltung der Kündigung von Benachrichtigungen für lang andauernde Worker nach der Kündigung von Workern wurde verbessert. (aosp/1228346)
Version 2.3.1
Version 2.3.1
5. Februar 2020
androidx.work:work-*:2.3.1
wird freigegeben. Version 2.3.1 enthält diese Commits.
Fehlerkorrekturen
- Verwalten Sie den Lebenszyklus von
Notification
s fürWorker
s mit langer Ausführungszeit, die ausgeführt werden, wenn eineService
im Vordergrund aktiv ist. (aosp/1218539, b/147249312) WorkManager
hängt jetzt vonandroidx.sqlite:sqlite-framework:2.1.0
(stabile Version) ab. (aosp/1217729)- Es wurden Lint-Regeln hinzugefügt, damit bei Verwendung von
foregroundServiceType
s inForegroundInfo
eineforegroundServiceType
in derAndroidManifest.xml
angegeben wird. (aosp/1214207, b/147873061)
Version 2.3.0
Version 2.3.0
22. Januar 2020
androidx.work:work-*:2.3.0
wurde ohne Änderungen seit 2.3.0-rc01
veröffentlicht. Version 2.3.0 enthält diese Commits.
Wichtige Änderungen seit Version 2.2.0
- Support für lang andauernde oder wichtige Aufgaben über
ListenableWorker#setForegroundAsync()
. - Unterstützung für Worker-Fortschritt über
ListenableWorker#setProgressAsync()
. - WorkManager bündelt jetzt zusätzliche Lint-Regeln als Teil der Bibliothek, sodass Fehler frühzeitig erkannt werden.
Version 2.3.0-rc01
8. Januar 2020
androidx.work:work-*:2.3.0-rc01
wird freigegeben. Version 2.3.0-rc01 enthält diese Commits.
Dieser Release ist identisch mit 2.3.0-beta02
Fehlerkorrekturen
- Das Artefakt
work-testing
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 freigegeben. Version 2.3.0-beta02 enthält diese Commits.
Neue Funktionen
- Es wurde eine bessere Fehlermeldung für nicht wiederherstellbare SQLite-Ausnahmen hinzugefügt. (aosp/1185777)
- Eine Lint-Regel wurde hinzugefügt, die dafür sorgt, dass der Contentanbieter
androidx.work.impl.WorkManagerInitializer
aus demAndroidManifest.xml
entfernt wird, wenn die On-Demand-Initialisierung verwendet wird. (aosp/1167007) - Eine Lint-Warnung wurde hinzugefügt, wenn
enqueue()
fürPeriodicWorkRequest
anstelle vonenqueueUniquePeriodicWork()
verwendet wird. (aosp/1166032)
API-Änderungen
- Für
ForegroundInfo
musst du jetzt dienotificationId
angeben, die bei der Verwendung vonListenableWorker.setForegroundAsync()
verwendet werden soll. Das ist eine funktionsgefährdende Änderung. Auf diese Weise können Sie mehrereWorker
s mit langer Ausführungszeit parallel ausführen. MitWorkManager
lassen sich außerdem die Lebensdauer der bereitgestelltenNotification
s besser verwalten. (b/145473554, aosp/1181208, asop/1181216, asop/1183577)
Fehlerkorrekturen
- Ein Fehler in der AlarmManager-Implementierung wurde behoben, bei dem Alarme nicht korrekt bereinigt wurden. (aosp/1156444)
- Es wurde ein Fehler behoben, bei dem eine leere Liste mit
WorkRequest
s dazu führte, dass eine falscheWorkContinuation
-Kette erstellt wurde. (b/142835274, aosp/1157051)
Abhängigkeitsänderungen
- WorkManager verwendet jetzt Room 2.2.2.
Version 2.3.0-beta01
20. November 2019
androidx.work:work-*:2.3.0-beta01
wird freigegeben. 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 der On-Demand-Initialisierung verhindert. aosp/1164559
Version 2.3.0-alpha03
23. Oktober 2019
androidx.work:work-*:2.3.0-alpha03
wird freigegeben. Version 2.3.0-alpha03 enthält diese Commits.
Neue Funktionen
- Die
WorkManager.createCancelPendingIntent()
API wurde hinzugefügt, mit derWorkRequest
s ganz einfach abgebrochen werden können, ohne dass eine weitere Komponente in derAndroidManifest.xml
registriert werden muss. Mit dieser API lassen sichWorkRequest
s ausNotification
s besonders einfach abbrechen. Wir gehen davon aus, dass dies mit den neuen APIs im Vordergrund in Version 2.3.0 gekoppelt sein wird. - Für WorkManager sind jetzt
androidx.room:*:2.2.0
(stabile Version) erforderlich.
API-Änderungen
ForegroundInfo.getNotificationType()
wurde inForegroundInfo.getForegroundServiceType()
umbenannt, um die Einheitlichkeit mit den zugrunde liegenden Plattform-APIs zu verbessern. (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 freigegeben. Version 2.3.0-alpha02 enthält diese Commits.
Neue Funktionen
- WorkManager unterstützt jetzt lang andauernde oder wichtige Aufgaben, die vom Betriebssystem aufrecht erhalten 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 funktioniert fair, wenn sich die Anzahl der in der Warteschlange enthaltenen
WorkRequest
s den Planungslimits nähert. (aosp/1105766) - WorkManager ruft
ListenableWorker#onStopped()
nur dann auf, wenn die Arbeit noch nicht abgeschlossen wurde. (b/140055777) - WorkManager entfernt jetzt Informationen zum Fortschritt, wenn ein Mitarbeiter unterbrochen wird oder seinen Endzustand erreicht. (aosp/1114572)
Data
bietet jetzt eine viel nützlicheretoString()
Darstellung. (b/140945323)Data
verfügt jetzt über eine bessereequals()
-Methode. Außerdem wirddeepEquals
fürArray
-Typen unterstützt. (b/140922528)- WorkManager speichert jetzt die interne Datenbank und die Dateien mit den Einstellungen in einem Verzeichnis ohne Sicherungskopien. (b/114808216)
Version 2.3.0-alpha01
22. August 2019
androidx.work:work-*:2.3.September 5, 20190-alpha01
wird freigegeben. Die in dieser Version enthaltenen Commits finden Sie hier.
Neue Funktionen
ListenableWorker
-Nutzer können den Fortschritt jetzt über diesetProgressAsync()
API festlegen. Außerdem wurde eine entsprechendesuspend
-ing-setProgress
-API inCoroutineWorker
und einsetProgress
inRxWorker
hinzugefügt, das einenSingle<Void>
zurückgibt. Mit diesen neuen APIs können Worker Fortschrittsinformationen überWorkInfo
übertragen, für das eine entsprechendegetProgress
API vorhanden ist. (b/79481554)Data
hat einecontainsKey()
API, mit der geprüft werden kann, ob Eingabedaten inWorker
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 Versionsverwaltungsgarantien gibt. Sie sollten ihn daher nicht dauerhaft speichern oder für IPC zwischen Anwendungen verwenden. Sie können nur zwischen mehreren Prozessen derselben Anwendung verwendet werden.- Es wurde die Möglichkeit hinzugefügt, ein
InputMergerFactory
überConfiguration.setInputMergerFactory
anzugeben. (b/133273159)
API-Änderungen
- WorkManager gibt eine Instanz von
IllegalStateException
aus, wennWorkerFactory
eine Instanz vonListenableWorker
zurückgibt, die zuvor aufgerufen wurde. (b/139554406) - Dokumentationsaktualisierungen zur Stornierung von
ListenableFuture
und zumonStopped()
-Callback inListenableWorker
. (b/138413671)
Fehlerkorrekturen
- Der laufende Planer ignoriert jetzt
WorkRequest
s mit der Einschränkungidle
. Diese Anfragen werden jetzt nur noch vonJobScheduler
angenommen, wenn das Gerät tatsächlichidle
ist. (aosp/1089779) TestScheduler
verwendet den angegebenenExecutor
jetzt korrekt für seinen internen Task-Executor in Tests. (aosp/1090749)
Version 2.2.0
Version 2.2.0
15. August 2019
androidx.work:work-*:2.2.0
wird freigegeben. 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 gegenüber Version 2.1.0
androidx.work:work-gcm:2.2.0
ist ein neues Maven-Artefakt, das die Verwendung von GCMNetworkManager als Planer unterstützt, wenn Google Play-Dienste für API-Level <= 22 verfügbar sind. Dies ist eine optionale Abhängigkeit, die bei älteren API-Versionen eine zuverlässigere und leistungsfähigere Hintergrundverarbeitung ermöglicht. Wenn deine App Google Play-Dienste verwendet, füge diese Abhängigkeit zu deiner Gradle-Datei hinzu, damit GCMNetworkManager automatisch unterstützt wird. Wenn die Play-Dienste nicht verfügbar sind, greift WorkManager auf älteren Geräten weiterhin auf AlarmManager zurück.
Version 2.2.0-rc01
30. Juli 2019
androidx.work:work-*:2.2.0-rc01
wird freigegeben. Die in dieser Version enthaltenen Commits finden Sie hier.
Fehlerkorrekturen
- Es wurde ein Fehler in der AlarmManager-Implementierung behoben, der dazu führte, dass der Dienst vorzeitig heruntergefahren wurde und in seltenen Fällen zu einem
RejectedExecutionException
führte. (aosp/1092374) (b/138238197). - Es wurde eine Problemumgehung für ein
NullPointerException
hinzugefügt, wenn auf einigen GerätenJobScheduler
APIs verwendet werden. (aosp/1091020) (b/138364061), (b/138441699)
Version 2.2.0-beta02
19. Juli 2019
androidx.work:work-*:2.2.0-beta02
wird freigegeben. Die in dieser Version enthaltenen Commits finden Sie hier.
Fehlerkorrekturen
- Die unbeabsichtigte Jacquard-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 freigegeben. 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 Planer unterstützt, wenn Google Play-Dienste für API-Level <= 22 verfügbar sind. Dies ist eine optionale Abhängigkeit, die bei älteren API-Versionen eine zuverlässigere und leistungsstärkere Hintergrundverarbeitung ermöglicht. Wenn deine App Google Play-Dienste verwendet, füge diese Abhängigkeit zu deiner Gradle-Datei hinzu, damit GCMNetworkManager automatisch unterstützt wird. Wenn die Play-Dienste nicht verfügbar sind, greift WorkManager auf älteren Geräten weiterhin auf AlarmManager zurück.
Fehlerkorrekturen
- Fehlerkorrektur 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 freigegeben. 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. Falls Probleme auftreten, können Sie dembuild.gradle
Folgendes hinzufügen:kotlinOptions { jvmTarget = "1.8" }
- Neue On-Demand-Initialisierung für WorkManager, wodurch WorkManager nur erstellt wird, wenn darauf verwiesen wird. b/127497100 So richten Sie Ihr Projekt für die On-Demand-Initialisierung ein:
- Deaktivieren Sie den automatischen Initialisierer.
- Implementieren Sie
Configuration.Provider
für Ihr benutzerdefiniertesApplication
-Objekt. - Ändern Sie alle Verweise von
WorkManager.getInstance()
inWorkManager.getInstance(Context)
. Im Rahmen dieser Änderung wurdeWorkManager.getInstance()
eingestellt. Es ist immer sicherer, die neueWorkManager.getInstance(Context)
-Ersetzung aufzurufen, auch wenn du keine On-Demand-Initialisierung vornimmst.
PeriodicWorkRequest
unterstützen jetzt anfängliche Verzögerungen. Sie können die MethodesetInitialDelay
fürPeriodicWorkRequest.Builder
verwenden, um eine anfängliche Verzögerung festzulegen. b/111404867- Es wurde die Möglichkeit hinzugefügt, mit
DelegatingWorkerFactory
an einen oder mehrere registrierteWorkerFactory
s zu delegieren. b/131435993 - Die von WorkManager verwendete
Executor
kann jetzt überConfiguration.Builder.setTaskExecutor
für die gesamte interne Buchhaltung angepasst werden. - Es wurde die Möglichkeit hinzugefügt, über die Einheiten testbare
Worker
- undListenableWorker
-Klassen mithilfe vonTestWorkerBuilder
undTestListenableWorkerBuilder
im Artefaktwork-testing
zu erstellen.- Beachten Sie, dass
work-testing
Kotlin jetzt als Abhängigkeit abrufen kann und standardmäßig mehrere Kotlin-Erweiterungen enthält.
- Beachten Sie, dass
- Anzahl der Ausführungsversuche zu
WorkInfo
hinzugefügt. b/127290461 Data
-Typen können jetzt Byte und Bytearrays speichern und abrufen. Die maximale Größe vonData
-Objekten wird dadurch NICHT geändert.- WorkManager hängt jetzt von
Room 2.1.0
ab, wodurch einige Datenbankprobleme behoben werden sollten.
Version 2.1.0-rc01
27. Juni 2019
androidx.work:work-*:2.1.0-rc01
wird freigegeben. Die in dieser Version enthaltenen Commits finden Sie hier.
Fehlerkorrekturen
- Es wurde ein Fehler behoben, der zum Absturz einer Anwendung führte, wenn Jobs mit
JobScheduler
ausgeführt wurden, während eine Sicherung ausgeführt wurde b/135858602.
Version 2.1.0-beta02
20. Juni 2019
androidx.work:work-*:2.1.0-beta02
wird freigegeben. Die in dieser Version enthaltenen Commits finden Sie hier.
Fehlerkorrekturen
TestListenableWorkerBuilder
verwendet jetzt die korrekteWorkerFactory
beim Erstellen vonListenableWorker
-Instanzen. b/135275844- Ein Fehler wurde behoben, der zu Driften in den Ausführungsfenstern für
WorkRequest
s aufgrund von Prozesstod führte. b/135272196
Version 2.1.0-beta01
13. Juni 2019
androidx.work:work-*:2.1.0-beta01
wird freigegeben. Die in dieser Version enthaltenen Commits finden Sie hier.
Fehlerkorrekturen
- WorkManager hängt jetzt von
Room 2.1.0
ab, wodurch einige Datenbankprobleme behoben werden sollten. - Einige Startdatenträger-E/A aus dem Hauptthread entfernt.
- Ein potenzieller Deadlock beim Einschränkungs-Tracking wurde behoben. b/134361006
- Vorbeugende Kündigung ungültiger Jobs, die WorkManager zugeordnet sind. b/134058261
- Den JobScheduler APIs wurden einige defensive Aufrufe für fehlerhafte Geräte hinzugefügt.
Version 2.1.0-alpha03
5. Juni 2019
androidx.work:*:2.1.0-alpha03
wird freigegeben.
Fehlerkorrekturen
- Die Dokumentation für
PeriodicWorkRequest
s wurde verbessert. WorkManagerTestInitHelper
verwendet jetzt den korrekten Hintergrund-Executor für Tests.- SQLite-Probleme bei großen Transaktionen auf einigen Geräten wurden behoben. (b/130182503)
- Die Abhängigkeiten von WorkManager sind jetzt detaillierter. (b/133169148)
- OEM-spezifische Fehler bei der Implementierung von
JobScheduler
bei der Planung von Jobs mit WorkManager werden umgangen. - Verbesserungen im auf AlarmManager basierenden Planer bezüglich der Dienstlebensdauer, die zuvor seltene Abstürze verursachten. (b/133313734)
Version 2.1.0-alpha02
16. Mai 2019
WorkManager 2.1.0-alpha02 wird veröffentlicht. Diese Version enthält mehrere neue APIs.
API-Änderungen
PeriodicWorkRequest
unterstützen jetzt anfängliche Verzögerungen. Sie können die MethodesetInitialDelay
fürPeriodicWorkRequest.Builder
verwenden, um eine anfängliche Verzögerung festzulegen. b/111404867Es wurde die Möglichkeit hinzugefügt, mit
DelegatingWorkerFactory
an einen oder mehrere registrierteWorkerFactory
s zu delegieren. b/131435993Die von WorkManager verwendete
Executor
kann jetzt überConfiguration.Builder.setTaskExecutor
für die gesamte interne Buchhaltung angepasst werden.Die Dokumentation zu
WorkRequest.keepResultsForAtLeast
(b/130638001), On-Demand-Initialisierung undPeriodicWorkRequest.Builder
(b/131711394) wurde verbessert.
Version 2.1.0-alpha01
24. April 2019
WorkManager 2.1.0-alpha01 wird veröffentlicht. Diese Version enthält mehrere neue APIs. Beachten Sie, dass es ab dieser Version neue Funktionen geben wird, die nicht in das 1.x-Release zurückportiert werden. Wir empfehlen den Wechsel zu 2.x.
API-Änderungen
- Neue On-Demand-Initialisierung für WorkManager, wodurch WorkManager nur erstellt wird, wenn darauf verwiesen wird. b/127497100 So richten Sie Ihr Projekt für die On-Demand-Initialisierung ein:
- Deaktivieren Sie den automatischen Initialisierer.
- Implementieren Sie
Configuration.Provider
für Ihr benutzerdefiniertesApplication
-Objekt. - Ändern Sie alle Verweise von
WorkManager.getInstance()
inWorkManager.getInstance(Context)
. Im Rahmen dieser Änderung wurdeWorkManager.getInstance()
eingestellt. Es ist immer sicherer, die neueWorkManager.getInstance(Context)
-Ersetzung aufzurufen, auch wenn du keine On-Demand-Initialisierung vornimmst.
- Es wurde die Möglichkeit hinzugefügt, über die Einheiten testbare
Worker
- undListenableWorker
-Klassen mithilfe vonTestWorkerBuilder
undTestListenableWorkerBuilder
im Artefaktwork-testing
zu erstellen.- Hinweis: Mit
work-testing
werden Kotlin-Tags jetzt als Abhängigkeit abgerufen, enthält aber standardmäßig auch mehrere Kotlin-Erweiterungen.
- Hinweis: Mit
- Anzahl der Ausführungsversuche zu
WorkInfo
hinzugefügt. b/127290461 Data
-Typen können jetzt Byte und Bytearrays speichern und abrufen. Die maximale Größe vonData
-Objekten wird dadurch NICHT geändert.- Eingestellt:
CoroutineWorker.coroutineContext
. Dieses Feld wurde fälschlicherweise alsCoroutineDispatcher
eingegeben. Sie sollten es nicht mehr benötigen, da Sie selbst im Text der anhaltenden Funktion den gewünschten coroutineContext aufrufen können. RxWorker.createWork()
undRxWorker.getBackgroundScheduler()
sind jetzt mit@NonNull
-Rückgabetypen annotiert.
Version 2.0.1
Version 2.0.1
9. April 2019
WorkManager 2.0.1 wurde veröffentlicht. Diese Version ist mit 2.0.1-rc01 identisch.
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 von Legacy-1.x werden einige dieser Änderungen auch in 1.0.1-rc01 angezeigt.
Fehlerkorrekturen
- Robolectric-Tests funktionieren jetzt ordnungsgemäß mit WorkManager. b/122553577
- Ein Grenzfallabsturz wurde behoben, bei dem die Einschränkungsverfolgung in Pre-JobScheduler-APIs nicht bereinigt wurde. b/129226383
- Ein
StackOverflowError
mit langen Arbeitsketten wurde behoben. b/129091233 - Die Dokumentation für
PeriodicWorkRequest
s wurde aktualisiert, um anzugeben, dass die flexible Zeit in 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 wird veröffentlicht. Diese Version ist identisch mit 2.0.0-rc01 und ist die AndroidX-Version von 1.0.0 (stabile Version) mit AndroidX-Abhängigkeiten. Wir empfehlen, diese Version anstelle der alten 1.x-Versionen zu verwenden. Die gesamte aktive Entwicklung ist auf 2.x ausgerichtet und 1.x erhält nur 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 mit der stabilen Version 1.0.0 identisch, weist jedoch Abhängigkeiten von AndroidX auf. Sobald die Version 2.0.0 stabil ist, sollten Sie diese Version verwenden. Die Legacy-Versionen 1.x erhalten nur noch einige wichtige Fehlerkorrekturen. Die gesamte aktive Entwicklung ist auf 2.x ausgerichtet.
Abhängigkeiten vor AndroidX
Referenzdokumente: Java
Groovig
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. Diese Version ist mit 1.0.1-rc01 identisch.
Wir empfehlen Nutzern dringend, auf WorkManager 2.x zu aktualisieren, da es in Zukunft nur sehr wenige Updates für den 1.x-Zweig geben wird. Es werden auch keine neuen APIs für die 1.x-Bibliothek 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 ordnungsgemäß mit WorkManager. b/122553577
- Ein Grenzfallabsturz wurde behoben, bei dem die Einschränkungsverfolgung in Pre-JobScheduler-APIs nicht bereinigt wurde. b/129226383
- Ein
StackOverflowError
mit langen Arbeitsketten wurde 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 entspricht 1.0.0-rc02.
Version 1.0.0-rc02
21. Februar 2019
Dies ist der zweite Release-Kandidaten für die stabile Version 1.0.0 von WorkManager. Diese Version enthält zwei Fehlerbehebungen.
Fehlerkorrekturen
Worker
s werden nach einem Anwendungsabsturz jetzt korrekt geplant. b/124546316Worker
s, die ein deaktiviertesException
auslösen, werden jetzt korrekt alsFAILED
markiert und stürzen den App-Prozess nicht mehr ab.
Version 1.0.0-rc01
14. Februar 2019
Dies ist ein Releasekandidat für die stabile Version 1.0.0 von WorkManager. Diese Version enthält eine Fehlerkorrektur.
Fehlerkorrekturen
- Die auf AlarmManager basierende Implementierung respektiert jetzt
flex
-Fenster für PeriodicWorkRequests korrekt. b/124274584
Version 1.0.0-beta05
6. Februar 2019
Diese Version enthält einige Fehlerbehebungen.
Fehlerkorrekturen
- Ein Fall wurde behoben, bei dem
JobScheduler.getPendingJob(...)
in API 23 verwendet wurde. b/123893059 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
- Verbesserte Planung von PeriodicWork für die auf AlarmManager basierende Implementierung.
- Ein Fall wurde behoben, bei dem WorkManager Einschränkungen bei Verwendung der AlarmManager-basierten Implementierung nicht korrekt nachverfolgen konnte. b/123379508
- Ein Fall wurde behoben, bei dem WorkManager die Arbeit am Prozessende nicht wiederholen konnte, wenn die AlarmManager-basierte Implementierung verwendet wurde. b/123329850
- Ein Fall wurde behoben, bei dem WorkManager bei Verwendung der AlarmManager-basierten Implementierung Wakelocks verließ.
Version 1.0.0-beta03
25. Januar 2019
Diese Version enthält einige Fehlerbehebungen.
Fehlerkorrekturen
- Wir haben die Regression
1.0.0-beta02
eingeführt, die dazu führte, dass die Arbeit in einigen Situationen nicht ordnungsgemäß ausgeführt wurde. b/123211993 - Ein Fall wurde behoben, bei dem die Backoff-Zeit bei der Arbeit nicht richtig berücksichtigt wurde. b/122881597
- Ein
ConcurrentModificationException
auf Geräten mit Android 5.1 (API oder niedriger) wurde behoben. Dies ist eine Fortsetzung der Fehlerbehebung in1.0.0-beta02
. b/121345393 exported=false
wurde für einige Komponenten in unserem Manifest hinzugefügt, bei denen diese Annotation fehlte.- In der Dokumentation auf Paketebene wurden Informationen dazu enthalten, wie WorkManager mit dem Betriebssystem interagiert.
Version 1.0.0-beta02
15. Januar 2019
Diese Version enthält einige Fehlerbehebungen.
Fehlerkorrekturen
- Ein Grenzfall wurde behoben, bei dem regelmäßige Arbeit auf Geräten mit Android 6.0 (API-Ebene 23) mehr als einmal pro Intervall ausgeführt werden konnte. b/121998363
ConcurrentModificationException
auf Geräten mit Android 5.1 (API-Level 22) oder niedriger wurde behoben. b/121345393- Fehler beim Ausführen von Aufgaben behoben, wenn auf Geräten mit Android 5.1 (API-Level 22) oder niedriger keine Einschränkungen erfüllt sind. b/122578012
- Optimierte Verarbeitung der Aufgaben, um in einigen Grenzfällen schneller zu arbeiten. b/122358129
- Es wurde eine Änderung hinzugefügt, um potenzielle Race-Bedingungen für mehrere Instanzen von
LiveData
zu berücksichtigen, die WorkManager verwendet. - Verschoben, um die
Room
-Abhängigkeit1.1.1
anstelle von1.1.1-rc01
zu verwenden. Diese Versionen sind identisch. b/122578011
Version 1.0.0-beta01
19. Dezember 2018
Diese Version enthält keine API-Änderungen; in Zukunft wird erwartet, dass WorkManager die API bis zur nächsten Version stabil bleibt, sofern kein kritisches Problem auftritt. Diese Version enthält einige Fehlerbehebungen.
Fehlerkorrekturen
- Zuvor abgebrochene untergeordnete Aufgaben von erfolgreich abgeschlossenen übergeordneten Aufgaben werden nicht mehr ausgeführt. b/120811767
- Richtig initialisierte Logging-Klassen (werden hauptsächlich während Tests angezeigt)
Version 1.0.0-alpha13
12. Dezember 2018
Dieser Release enthält eine kleine API-Änderung, die für einige Kotlin-Nutzer hilfreich ist.
API-Änderungen
androidx.work.Result
wurde in eine innere Klasse vonListenableWorker
verschoben. Dadurch werden Refaktorierungskonflikte mit derResult
-Klasse der obersten Ebene von Kotlin verhindert. Dies ist eine nicht abwärtskompatible API-Änderung. b/120564418
Wichtige API-Änderungen
androidx.work.Result
wurde in eine innere Klasse vonListenableWorker
verschoben.
Version 1.0.0-alpha12
5. Dezember 2018
Diese Version enthält einige funktionsgefährdende API-Änderungen. Weitere Informationen finden Sie unten im Abschnitt Wichtige API-Änderungen. Diese Version wird wahrscheinlich als erste Betaversion veröffentlicht werden. alpha12
enthält auch umfangreiche Dokumentationsaktualisierungen.
API-Änderungen
- Mit dem neuen Artefakt
work-rxjava2
wirdRxWorker
eingeführt. Dies ist einListenableWorker
, derSingle<Payload>
erwartet. - Firebase JobDispatcher wird nicht mehr unterstützt, da die Funktion demnächst eingestellt wird. Das bedeutet, dass das
work-firebase
-Artefakt im Rahmen der Betaphase nicht mehr aktualisiert wird. Wir arbeiten daran, in Zukunft eine Alternative hinzuzufügen. Payload
inResult
kombiniert.Result
ist jetzt eine „versiegelte Klasse“ mit drei konkreten Implementierungen, die Sie überResult.success()
(oderResult.success(Data)
),Result.failure()
(oderResult.failure(Data)
) undResult.retry()
erhalten. IhreListenableFuture
s ergeben jetztResult
stattPayload
.Worker
s haben keine Getter- und Setter-Methoden für die AusgabeData
. Das ist eine funktionsgefährdende Änderung.Constraints.Builder.setTriggerContentMaxDelay(long, TimeUnit)
undConstraints.Builder.setTriggerContentUpdateDelay(long, TimeUnit)
sowie Varianten wurden hinzugefügt, um langsam auslösende Inhalts-URIs besser zu unterstützen. b/119919774WorkRequest.Builder.setBackoffCriteria(BackoffPolicy, Duration)
Variante wurde hinzugefügt. Für diese Methode ist API 26 erforderlich.- Die Kotlin-Erweiterungsmethoden
Operation.await()
undListenableFuture.await()
wurden hinzugefügt. Operation.getException()
wurde inOperation.getThrowable()
umbenannt. Das ist eine funktionsgefährdende Änderung.- Die Klasse
ContentUriTriggers
und die Methoden, die darauf verweisen, sind nicht mehr öffentlich verfügbar. Das ist eine funktionsgefährdende Änderung. - Die restlichen varargs-Methoden aus
WorkManager
,WorkContinuation
undOneTimeWorkRequest
wurden entfernt, um die API zu optimieren. Zur Behebung von Build-Problemen können Sie Ihre vorhandenen Varargs mitArrays.asList(...)
umschließen. Wir fügen weiterhin Einzelargumente für jede Methode hinzu. Das ist eine funktionsgefährdende Änderung. WorkContinuation.combine(OneTimeWorkRequest, *)
Varianten wurden entfernt. Es hat eine verwirrende API präsentiert. Die vorhandenencombine
-Methoden sind verständlicher. Das ist eine funktionsgefährdende Änderung.
Fehlerkorrekturen
- Pre-Marshmallow-Implementierungen sind jetzt zuverlässiger, wenn es darum geht, den Tod von bereits laufenden Aufgaben zu bewältigen.
LiveData
, der überobserveForever
beobachtet wird, wird über WorkManager erfasst. Dies ist ein Backport einer Fehlerbehebung für die Raumbibliothek. B/74477406Data.Builder.build()
gibt jetzt eine Ausnahme aus, wenn das serielle Objekt seine maximale Größe überschreitet. Früher geschah dies nur bei einem Hintergrundthread, der nicht richtig verarbeitet werden konnte.- Es wird weiter unterschieden, ob angehaltene und abgebrochene Arbeiten gelöscht wurden.
getWorkInfoById()
gibt währendListenableWorker.onStopped()
einWorkInfo
mit demCANCELLED
State
zurück. null
-Result
s inListenableWorker
als Fehler behandeln. b/120362353- Spekulative Korrektur für Shield Tablets mit API 24, die manchmal ein
IllegalArgumentException
ausgelöst haben b/119484416
Wichtige API-Änderungen
- Firebase JobDispatcher wird nicht mehr unterstützt, da die Funktion demnächst eingestellt wird. Das bedeutet, dass das
work-firebase
-Artefakt im Rahmen der Betaphase nicht mehr aktualisiert wird. Wir arbeiten daran, in Zukunft eine Alternative hinzuzufügen. Payload
inResult
kombiniert.Result
ist jetzt eine „versiegelte Klasse“ mit drei konkreten Implementierungen, die Sie überResult.success()
(oderResult.success(Data)
),Result.failure()
(oderResult.failure(Data)
) undResult.retry()
erhalten. IhreListenableFuture
s ergeben jetztResult
stattPayload
.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 aus
WorkManager
,WorkContinuation
undOneTimeWorkRequest
wurden entfernt, um die API zu optimieren. Zur Behebung von Build-Problemen können Sie Ihre vorhandenen Varargs mitArrays.asList(...)
umschließen. Wir fügen weiterhin Einzelargumente für jede Methode hinzu. WorkContinuation.combine(OneTimeWorkRequest, *)
Varianten wurden entfernt. Es hat eine verwirrende API präsentiert. Die vorhandenencombine
-Methoden sind verständlicher.
Version 1.0.0-alpha11
8. November 2018
Diese Version enthält viele Änderungen, die ab beta
zur stabilen API werden.
In dieser Version gibt es nicht abwärtskompatible API-Änderungen. Weitere Informationen finden Sie unten im Abschnitt Wichtige API-Änderungen.
API-Änderungen
- Mit
work-runtime-ktx
wird ein neuesCoroutineWorker
eingeführt. WorkStatus
wurde inWorkInfo
umbenannt. Alle entsprechenden Varianten der MethodegetStatus
wurden in die entsprechenden VariantengetWorkInfo
umbenannt. Das ist eine funktionsgefährdende Änderung.ListenableWorker.onStopped()
akzeptiert kein boolesches Argument mehr, das angibt, obWorkRequest
abgebrochen wurde. Diese Unterscheidung wird vonWorkManager
nicht mehr vorgenommen. Das ist eine funktionsgefährdende Änderung.- Das Paket „
androidx.work.test
“ wurde in das Paket „androidx.work.testing
“ umbenannt. Das ist eine funktionsgefährdende Änderung. - Setter für
Constraints
sind nicht mehr Teil der öffentlichen API. Das ist eine funktionsgefährdende Änderung. WorkerParameters.getTriggeredContentUris()
undWorkerParameters.getTriggeredContentAuthorities()
haben zuvor Arrays zurückgegeben. Jetzt geben diese Methoden Collections zurück. Das ist eine funktionsgefährdende Änderung.ListenableWorker.onStartWork()
wurde inListenableWorker.startWork()
umbenannt. Das ist eine funktionsgefährdende Änderung.- Der Konstruktor für
WorkStatus
ist nicht mehr Teil der öffentlichen API. Das ist eine funktionsgefährdende Änderung. Configuration.getMaxJobSchedulerID()
undConfiguration.getMinJobSchedulerID()
werden inConfiguration.getMinJobSchedulerId()
bzw.Configuration.getMaxJobSchedulerId()
umbenannt. Das ist eine funktionsgefährdende Änderung.- Der öffentlichen API wurden viele
@NonNull
-Anmerkungen 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 neuenOperation
-Typ zurück. Das ist eine funktionsgefährdende Änderung. - Alle Varianten von
enqueue
akzeptieren keine Varargs fürWorkRequest
s mehr. Das ist eine funktionsgefährdende Änderung. Verwende stattdessen Sammlungen. Sie könnenArrays.asList()
verwenden, um vorhandenen Code zu ändern. Wir haben dies getan, um die API-Oberfläche und die Anzahl der Methoden zu reduzieren. - Wenn Sie versuchen,
WorkManager
mehrmals pro Vorgang zuinitialize
, führt dies nun zu einemIllegalStateException
. Das ist eine funktionsgefährdende Änderung.
Fehlerkorrekturen
WorkRequest.Builder
-Elemente imwork-runtime-ktx
-Artefakt verwenden jetztListenableWorker
-Werte. Damit wird b/117666259 behoben.- Achten Sie darauf, dass die nächste Ausführungszeit für
PeriodicWork
in der Zukunft liegt. Damit wird b/118204399 behoben. - Entfernen Sie potenzielle Laufwerk-E/A-Vorgänge, wenn Sie WorkManager beim Start der App verwenden. Damit wird b/117796731 behoben.
- Eine Race-Bedingung in
WorkConstraintsTracker
wurde behoben. Damit wird android-workmanager/issues/56 behoben.
Wichtige API-Änderungen
WorkStatus
wurde inWorkInfo
umbenannt. Alle entsprechenden Varianten der MethodegetStatus
wurden in die entsprechenden VariantengetWorkInfo
umbenannt.ListenableWorker.onStopped()
akzeptiert kein boolesches Argument mehr, das angibt, obWorkRequest
abgebrochen wurde. Diese Unterscheidung wird vonWorkManager
nicht mehr vorgenommen.- Das Paket „
androidx.work.test
“ wurde in das Paket „androidx.work.testing
“ umbenannt. - Setter für
Constraints
sind nicht mehr Teil der öffentlichen API. WorkerParameters.getTriggeredContentUris()
undWorkerParameters.getTriggeredContentAuthorities()
haben zuvor Arrays zurückgegeben. Jetzt geben diese Methoden Collections zurück.ListenableWorker.onStartWork()
wurde 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 neuenOperation
-Typ zurück. - Alle Varianten von
enqueue
akzeptieren keine Varargs fürWorkRequest
s mehr. - Wenn Sie versuchen,
WorkManager
mehrmals pro Vorgang zuinitialize
, führt dies nun zu einemIllegalStateException
.
Version 1.0.0-alpha10
11. Oktober 2018
Diese Version unterstützt vom Entwickler gesteuerte asynchrone Arbeit. In dieser Version gibt es nicht abwärtskompatible API-Änderungen. Weitere Informationen finden Sie unten im Abschnitt Wichtige API-Änderungen.
Wir gehen davon aus, dass WorkManager die letzten Phasen der Alpha-Phase erreicht. Wir gehen davon aus, dass die Betaversion der APIs stabil sein wird. Bitte nehmen Sie sich daher etwas Zeit, um uns über unseren Issue Tracker Feedback zu geben.
API-Änderungen
- Alle zuvor
deprecated
-Methoden und -Klassen wurden entfernt, insbesondere derWorker
-Standardkonstruktor. Dies ist eine funktionsgefährdende API-Änderung. NonBlockingWorker
wurde inListenableWorker
umbenannt, der jetzt ein eingeblendeter öffentlicher Kurs ist und verwendet werden kann.ListenableWorker
bietet Zugriff auf die abstrakte MethodeListenableFuture<Payload> onStartWork()
, die im Hauptthread aufgerufen wird. Es liegt an Ihnen, die Arbeit asynchron zu starten und zu verarbeiten. Wenn Sie fertig sind, sollten Sie dieListenableFuture
entsprechend aktualisieren. Referenzimplementierungen vonListenableFuture
s werden imFutures
-Paket inalpha02
bereitgestellt (siehe unten im AbschnittWorkManager
).Worker
erweitertListenableWorker
und funktioniert weiterhin wie zuvor mit der abstraktenResult doWork()
-Methode.- Einige Methoden und Mitglieder wurden von
Worker
inListenableWorker
zufällig angeordnet. - Wir werden bald Referenzimplementierungen für
ListenableWorker
s bereitstellen, die Kotlin-Koroutinen (nach Veröffentlichung der stabilen Versionen) und RxJava2 verwenden.
- Die Schnittstelle
WorkerFactory
und die konkrete ImplementierungDefaultWorkerFactory
wurden zu einer abstrakten Klasse namensWorkerFactory
zusammengeführt. Die Implementierung sorgt dafür, dass das reflexionsbasierte Standardverhalten als letzte Maßnahme für alle von Nutzern erstelltenWorkerFactory
-Instanzen aufgerufen wird. Das ist eine funktionsgefährdende Änderung. WorkManager.synchronous()
undWorkContinuation.synchronous()
sowie alle zugehörigen Methoden wurden entfernt.ListenableFuture<Void>
wurde in der API als Rückgabetyp vieler Methoden hinzugefügt. Dies ist eine funktionsgefährdende API-Änderung.- Sie können jetzt mithilfe von
ListenableFuture
s synchron abrufen und beobachten. Beispielsweise wird mitWorkManager.enqueue()
frühervoid
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
-Werte nicht Aufschluss darüber geben, ob der Vorgang erfolgreich war oder fehlgeschlagen ist, sondern nur, dass sie abgeschlossen wurden. Sie müssen weiterhin WorkManager-Methoden verketten, um diese Informationen zu erhalten. cancel()
-Aufrufe für diese Objekte werden ignoriert, da sie verwirrend und schwer nachvollziehbar sind. Möchten Sie den Vorgang oder die daraus resultierende Arbeit abbrechen? Dies ist Bestandteil des Vertrags vonFuture
.- Um die Gleichheit mit den synchronen
getStatus*
-Methoden zu wahren, haben wirListenableFuture
Varianten bereitgestellt und die vorhandenen Varianten, dieLiveData
zurückgegeben haben, so umbenannt, dass sie explizit „LiveData“ als Teil des Namens enthalten (z. B.getStatusesByIdLiveData(UUID)
). Diese Änderung der API wird nicht unterstützt.
- Sie können jetzt mithilfe von
Fehlerkorrekturen
- Das bekannte Problem aus alpha09 mit doppelten
androidx-annotations.pro
-Dateien wurde behoben. Sie können die Problemumgehung 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 - Potenzielle
NullPointerException
in einer Race-Bedingung korrigieren, in der die ArbeitREPLACE
d war. b/116253486 und b/116677275 WorkContinuation.combine()
akzeptiert jetzt eine oder mehrereWorkContinuation
s statt zwei oder mehr. b/117266752
Wichtige API-Änderungen
- Alle zuvor
deprecated
-Methoden und -Klassen wurden entfernt, insbesondere derWorker
-Standardkonstruktor. - Die Schnittstelle
WorkerFactory
und die konkrete ImplementierungDefaultWorkerFactory
wurden zu einer abstrakten Klasse namensWorkerFactory
zusammengeführt. WorkManager.synchronous()
undWorkContinuation.synchronous()
wurden entfernt.WorkManager.getStatus*()
-Methoden geben jetztListenableFuture
s zurück.WorkManager.getStatus*LiveData()
gebenLiveData
s zurück.
Version 1.0.0-alpha09
19. September 2018
Bekanntes Problem
Wenn das folgende Problem auftritt: „Mehr als eine Datei mit dem Betriebssystemunabhängigen Pfad ‚META-INF/proguard/androidx-annotations.pro‘ wurde gefunden“, füge deiner Gradle-Datei Folgendes als vorübergehende Problemumgehung hinzu, während wir das Problem in alpha10 beheben:
Groovig
android { packagingOptions { exclude 'META-INF/proguard/androidx-annotations.pro' } }
Kotlin
android { packagingOptions { exclude("META-INF/proguard/androidx-annotations.pro") } }
Fehlerkorrekturen
- Eine weitere Korrektur, die für den Fehler „100 Jobs“ erforderlich war, wurde hinzugefügt. b/115560696
- Einige Fehlerkorrekturen für Fremdschlüsseleinschränkungsfehler aufgrund von Race-Bedingungen. b/114705286
ConstraintTrackingWorker.onStopped(boolean)
-Aufrufe an die zugrunde liegendeWorker
delegieren. b/114125093- Korrekte minimale Backoff-Verzögerung für Firebase JobDispatcher erzwingen. b/113304626
- Verbesserte Threading-Garantien sind bibliotheksintern.
- Potenzielles Problem mit der internen Deduplizierung von
LiveData
beheben.
API-Änderungen
- Sie können jetzt Ihre eigenen
Worker
-Instanzen zur Laufzeit erstellen. Geben Sie dazu einenWorkerFactory
als Teil vonWorkManager.Configuration
an. Die Fallback-Factory istDefaultWorkerFactory
, was dem Verhalten vorheriger Versionen von WorkManager entspricht.- Die Standardkonstruktoren für
Worker
undNonBlockingWorker
sind jetzt als verworfen 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 haben damit begonnen, das neue
ListenableFuture
-Artefakt intern zu verwenden (keine Guava-Abhängigkeiten). In zukünftigen Releases werden wir die API „ListenableFutures“ vorstellen. Durch diese Änderung kannNonBlockingWorker
auch wieder eingeblendet werden. - Möglichkeit zum Auslösen von geplanten Aufgaben in
TestDriver
überTestDriver.setInitialDelayMet(UUID)
undTestDriver.setPeriodDelayMet(UUID)
hinzugefügt. b/113360060
Wichtige Änderungen
- Die Standardkonstruktoren
Worker
undNonBlockingWorker
wurden eingestellt. Migrieren Sie so bald 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 ausdrücklich als nicht erkannt für direkten Start gekennzeichnet, damit sie während des direkten Starts nicht gestartet werden. Zukünftig wird es eine Version von WorkManager geben, die direkt auf den Bootmodus zugreift. b/112665532
- Ein Problem wurde behoben, bei dem wiederholte Arbeitsschritte nicht ausgeführt wurden. b/112604021
- Regelmäßige Arbeit wurde behoben, die nicht wiederholt ausgeführt wurde (aufgrund des oben genannten Problems). b/112859683
- Backoff-Richtlinien werden berücksichtigt, wenn der Anwendungsprozess bereits läuft.
- Ausnahmemeldungen in
Data
wurden korrigiert, um anzugeben, dass das Limit bei 10 KB liegt. - Der Höchstwert von
Configuration.setMaxSchedulerLimit(int)
wurde auf 50 gesenkt, um eine gewisse Latenz beim Abschluss der Verarbeitung inJobScheduler
zu berücksichtigen. b/112817355
Version 1.0.0-alpha07
16. August 2018
Fehlerkorrekturen
- Eine potenzielle SQL-Abfrage mit negativen Grenzen, die eine unbegrenzte Anzahl von Ergebnissen zurückgeben konnte, wurde behoben.
- Bei abgeschlossenen Arbeiten werden jetzt alle ausstehenden Kopien dieser Arbeit in anderen Planern wie vorgesehen abgebrochen. Dies hat zur Überschreitung des Limits von
JobScheduler
Jobs geführt. b/111569265 - Problem mit
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 den neuen KursNonBlockingWorker
. Dies hat keine Auswirkungen auf die aktuelle Nutzung. In Zukunft wirdNonBlockingWorker
zu einer vollständig unterstützten Entität für benutzerdefinierte Threading-Lösungen.- 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 undworkDataOf(vararg Pair<String, Any?>)
auf oberster Ebene hinzugefügt, um die Konsistenz mit vorhandenen APIs zu verbessern.
Version 1.0.0-alpha06
1. August 2018
Fehlerkorrekturen
- Datenbanksperrung beim Planen von Aufgaben verhindern. b/111801342
- Ein Fehler wurde behoben, der dazu geführt hat, dass
PeriodicWork
im Stromsparmodus nicht wie geplant ausgeführt wurde. b/111469837 - Eine Race-Bedingung beim Verfolgen von Einschränkungen, die zum Absturz von
WorkManager
führt, wurde behoben. googlecodelabs/android-workmanager/issues/56 - Erstellen Sie eindeutige
WorkRequest
s, wenn SieWorkRequest.Builder#build()
verwenden. b/111408337 - Aktiviert die Verwendung von
RescheduleReceiver
nur dann, wenn esWorkRequest
s gibt, die sie benötigen. b/111765853
Version 1.0.0-alpha05
24. Juli 2018
API-Änderungen
WorkManager.getInstance()
ist jetzt mit@NonNull
anstelle von@Nullable
annotiert. Wenn das Singleton-Objekt bei manueller Initialisierung nicht ordnungsgemäß initialisiert wird, gibt die Methode stattdessen einIllegalStateException
aus. Dies ist eine funktionsgefährdende API-Änderung.- 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 (entspricht implizitnull
). Diese Änderung der API würde nicht funktionieren. - Einige Methoden, die nur für die interne Verwendung benötigt werden, 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 in bekannten Fällen einer automatischen Sicherung keine Aufgaben mehr aus. Dies könnte zu einem Absturz geführt haben. b/110564377
- Die doppelte Planung von
PeriodicWorkRequest
s bei Verwendung vonJobScheduler
wurde korrigiert. b/110798652 - Es wurde ein Problem behoben, bei dem
PeriodicWorkRequest
s nach dem Stromsparmodus des Geräts nicht korrekt ausgeführt wurden. b/111469837 - Ein Problem mit anfänglichen Verzögerungen bei der Verwendung von Firebase JobDispatcher wurde behoben. b/111141023
- Einige potenzielle Race-Bedingungen und Zeitprobleme wurden behoben.
BroadcastReceiver
nicht mehr benötigte Dateien wurden korrekt freigegeben.- Optimierte Leistung beim Verschieben von Apps, wenn Apps nach einem erzwungenen Schließen neu gestartet werden.
TestScheduler.setAllConstraintsMet(UUID)
darf vor oder nach Einreihen der angegebenenWorkRequest
in die Warteschlange aufgerufen werden. b/111238024
Wichtige Änderungen
WorkManager.getInstance()
ist jetzt mit@NonNull
anstelle von@Nullable
annotiert.- Die Signatur von
Data.getString()
wurde geändert, sodass kein Standardwert mehr verwendet wird (implizitnull
). - Einige Methoden, die nur für die interne Verwendung benötigt werden, wurden als
@hide
gekennzeichnet. Dazu gehören derConstraints
-Konstruktor,Data.toByteArray()
undData.fromByteArray(byte[])
.
Version 1.0.0-alpha04
26. Juni 2018
Fehlerkorrekturen
PeriodicWorkRequest
s werden jetzt korrekt neu geplant, wenn dieAlarmManager
-basierte Implementierung verwendet wird.- Ein potenzieller ANR-Fehler wurde behoben, wenn alle Worker nach einem erzwungenen Stopp oder einem Neustart neu geplant wurden. b/110507716
- Annotationen zur Null-Zulässigkeit wurden verschiedenen WorkManager APIs hinzugefügt. b/110344065
- Nicht erfasste Ausnahmen protokollieren, die während der Worker-Ausführung auftreten. b/109900862
- destruktive Datenbankmigrationen sind zulässig, falls Sie ein Rollback auf eine ältere Version von WorkManager ausführen möchten. b/74633270
- Ein Migrationsabsturz bei der Erstellung doppelter impliziter Tags wurde behoben. Dieses sehr seltene Problem trat nur auf, wenn Sie dasselbe implizite Tag-Format selbst 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 der Verwendung von
JobScheduler
nach einem Geräteneustart wurden behoben.Jobs mit Inhalts-URI-Triggern bleiben jetzt auch nach Neustarts bestehen. b/80234744
Updates der Dokumentation. b/109827628, b/109758949, b/80230748
Ein Absturz beim erneuten Einreihen von
WorkRequest
in die Warteschlange wurde behoben. b/109572353.Die Kotlin-Compiler-Warnungen bei Verwendung der
work-runtime-ktx
-Abhängigkeit wurden behoben.WorkManager verwendet jetzt Version
1.1.1-rc1
vonRoom
.
API-Änderungen
getStatusesSync()
wurde hinzugefügt, die synchrone Version vonWorkContinuation.getStatuses()
.Worker
kann zwischen einem vom Nutzer initiierten Abbruch und einem temporären vom Betriebssystem angeforderten Beenden unterscheiden.Worker.isStopped()
gibttrue
zurück, wenn eine Haltestelle angefordert wurde.Worker.isCancelled()
gibttrue
zurück, wenn die Arbeit explizit abgebrochen wurde. b/79632247- Unterstützung für JobParameters#getNetwork() in API 28 hinzugefügt. Dies wird über
Worker.getNetwork()
angezeigt. 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, um einen Bereich vonJobScheduler
-Job-IDs zu definieren, die vonWorkManager
sicher verwendet werden können. 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 WorkManager.cancelAllWork()
bricht alleWorker
-Vorgänge ab. Bibliotheken, die vonWorkManager
abhängig sind, können mithilfe vonWorkManager.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
Änderungen des Verhaltens
- Es wurde ein implizites Tag für alle
WorkRequest
-Elemente hinzugefügt. Das ist der voll qualifizierte Klassenname fürWorker
. Dadurch können SieWorkRequest
-Werte ohnetag
-Werte entfernen oder wennid
nicht verfügbar ist. b/109572351
Wichtige Änderungen
Worker.WorkerResult
wurde inWorker.Result
umbenannt.Worker.onStopped
verfügt jetzt über einen zusätzlichenisCancelled
-Parameter, der auftrue
gesetzt wird, wennWorker
explizit abgebrochen wurde.
Version 1.0.0-alpha02
24. Mai 2018
Fehlerkorrekturen
- Problem mit
NullPointerException
fürState.isFinished()
behoben. b/79550068 - Ein Problem wurde behoben, durch das
Worker
s amApplication.onCreate()
verschoben wurden. B/79660657 - Es wurde ein Problem behoben, bei dem Sie mehr Arbeit planen konnten, als vom Betriebssystem zulässig ist. b/79497378
- Bereinigung von Wakelocks, die mit
Worker
s verknüpft sind, wurde in den Hintergrundthread verschoben. - Die
AlarmManager
-Implementierung bereinigt jetzt korrekt, wenn alle ausstehenden Arbeiten abgeschlossen sind. - Das Problem mit Cleanup-SQL-Abfragen, die sich auf nicht englischsprachige Sprachen ausgewirkt haben, wurde behoben. 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- Weitere Javadoc und Fehlerbehebungen in der Dokumentation. b/79691663
API-Änderungen
Worker
können reagieren, wenn sie angehalten werden. MitWorker.isStopped()
kann geprüft werden, ob eineWorker
beendet wurde.Worker.onStopped()
kann für einfache Bereinigungsvorgänge verwendet werden.- Die
Worker.getTags()
API gibt einSet
mit Tags zurück, die mitWorker
verknüpft sind. javax.time.Duration
-Überlastungen für APIs hinzugefügt, die eine Kombination aus Dauer undTimeUnit
s erfordern. Dieser Vorgang wird von@RequiresApi(26)
geschützt.WorkManager
Erweiterungen wurden aus demandroidx.work.ktx
-Paket in dasandroidx.work
-Paket verschoben. Die alten Erweiterungen wurden eingestellt und werden in einer zukünftigen Version entfernt.Configuration.withExecutor()
wurde verworfen. Verwende stattdessenConfiguration.setExecutor()
.
Version 1.0.0-alpha01
8. Mai 2018
WorkManager vereinfacht die Planung und Ausführung garantierter, beschränkungsbasierter Hintergrundarbeiten. Dieser erste Release ist 1.0.0-alpha01
.