WorkManager
Letzte Aktualisierung | Stabile Version | Releasekandidat | Beta-Ausgabe | Alpha-Release |
---|---|---|---|---|
7. August 2024 | 2.9.1 | - | - | 2.10.0-alpha02 |
Abhängigkeiten deklarieren
Um eine Abhängigkeit von WorkManager hinzuzufügen, müssen Sie das Maven-Repository von Google Ihrem Projekt:
Fügen Sie der Datei build.gradle
die Abhängigkeiten für die Artefakte hinzu, die Sie benötigen
Ihre App oder Ihr Modul:
Groovig
dependencies { def work_version = "2.9.1" // (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.1" // (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. Teilen Sie uns mit, wenn Sie neue Ausgaben entdecken oder zur Verbesserung dieser Bibliothek. In der bestehende Probleme in dieser Bibliothek, bevor Sie eine neue erstellen. So können Sie zu einem vorhandenen Problem abstimmen: indem Sie auf die Sternschaltfläche klicken.
Weitere Informationen finden Sie in der Dokumentation zur Problemverfolgung. .
Version 2.10
Version 2.10.0-alpha02
17. April 2024
androidx.work:work-*:2.10.0-alpha02
wurde veröffentlicht. Version 2.10.0-alpha02 enthält diese Commits.
API-Änderungen
- Es wurde die Möglichkeit hinzugefügt, Trace-Spans über eine konfigurierbare
@RestrictTo
Tracer
inWorkManager
auszugeben. (I17d7f, b/260214125) Configuration.workerCoroutineContext
wurde zur Steuerung des Dispatchers hinzugefügt, woCoroutineWorker
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
anstelle vonClass
erstellt werden:val request = OneTimeWorkRequest.Builder(Worker::class).setConstraints(...).build()
(Ib55f6)WorkManager
Klasse wurde zu Kotlin migriert. Methoden, dieLiveData
,ListenableFuture
oderFlow
zurückgeben, liefern jetzt korrekte Informationen zur Null-Zulässigkeit. Möglicherweise sind dafür Änderungen an der 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
wurde veröffentlicht. Version 2.10.0-alpha01 enthält diese Commits.
Neue Funktionen
- Entwickler können
NetworkRequest
als Einschränkung für einen Worker über die MethodeConstraints.setRequiredNetworkRequest
angeben. Dies ermöglicht eine genauere Kontrolle darüber, welches Netzwerk dieser Worker ausführen soll.
API-Änderungen
- Eine Funktion zum Angeben von
NetworkRequest
als Einschränkung wird hinzugefügt. (Id98a1, b/280634452)
Version 2.9
Version 2.9.1
7. August 2024
androidx.work:work-*:2.9.1
wurde veröffentlicht. Version 2.9.1 enthält diese Commits.
Fehlerkorrekturen
- Der Absturz wurde behoben, der durch
WorkManager
verursacht wurde, der versuchte, einen lang andauernden Worker (d.h. einen Worker im Vordergrund) neu zu starten, wenn für den Vordergrundtyp des Werks erforderliche Berechtigungen für Android 14 widerrufen wurden. (b/333957914)
Version 2.9.0
29. November 2023
androidx.work:work-*:2.9.0
wurde veröffentlicht. Version 2.9.0 enthält diese Commits.
Wichtige Änderungen seit Version 2.8.0
- Beobachtbarkeit über
Flow
-s. Anstelle vonLiveData
kann der Fortschritt von Workern nun über Abläufe überWorkManager.getWorkInfosFlow
und ähnliche Methoden beobachtet werden. - Jetzt gibt
WorkManager
einen Hinweis darauf, warum ein Worker zuvor beendet wurde. Sie kann von einem Worker selbst über die MethodegetStopReason()
oder vonWorkInfo
übergetStopReason()
abgefragt werden. - Genaue Planung der Mitarbeiter, die regelmäßig arbeiten, über
setNextScheduleTimeOverride
. Dies ermöglicht eine dynamische Berechnung des nächsten regelmäßigen Arbeitsplans, der verwendet werden kann, um erweiterte Funktionen wie adaptive Aktualisierungszeiten, benutzerdefinierte Wiederholungsverhalten zu implementieren oder einen Newsfeed-Worker auszuführen, bevor der Nutzer jeden Morgen ohne Drift aufwacht.ExistingPeriodicWorkPolicy.UPDATE
sollte zusammen mit diesen Techniken verwendet werden, um zu verhindern, dass ein derzeit ausgeführter Worker bei der Planung des nächsten Workers abgebrochen wird. - Test durch WorkManager mit Threading, das auf die Produktion zutrifft.
ExecutorsMode.PRESERVE_EXECUTORS
kann ininitializeTestWorkManager
verwendet werden, um die inConfiguration
festgelegten Executors beizubehalten und den echten Hauptthread zu verwenden. - Koroutinen-APIs wie
CoroutineWorker
wurden vom zusätzlichen Artefakt „work-runtime-ktx“ in das Haupt-Artefakt „work-runtime“ verschoben. „work-runtime-ktx“ ist jetzt leer.
API-Änderungen
stopReason
wurdeWorkInfo
hinzugefügt. Nachdem der Worker ausgeführt wurde, wirdstopReason
verfügbar gemacht. Das kann in der Meldung vonstopReason
hilfreich sein, denn sobald ein Worker beendet wurde, kann eine App selbst sehr schnell beendet werden. (I21386)- Zulassen, dass
Clock
über die Konfiguration festgelegt und verwendet wird, um die Ausführungsabfolge von Worker-Tests zu steuern. (IC586e) - Die Methode
getStopReason()
wurde zuListenableWorker
hinzugefügt, die einen Hinweis darauf gibt, warum der Worker beendet wurde. (I07060) WorkManagerTestInitHelper#closeWorkDatabase()
wurde hinzugefügt, um die Warnung von Closeguard zu gehackten Ressourcen zu vermeiden. (Ia8d49)- Der Konstruktor von
WorkInfo
ist jetzt öffentlich, was beim Testen nützlich sein kann. (Ia00b6, b/209145335) work-runtime-ktx
ist jetzt leer,CoroutineWorker
und andere Kotlin-spezifische Dienstprogramme sind jetzt im Haupt-Work Runtime-Artefakt verfügbar. (I71a9a)- Die Methode
setNextScheduleTimeOverride
wurde hinzugefügt, die das genaue Festlegen regelmäßiger Arbeitspläne (I3b4da) ermöglicht. getNextScheduleTimeMillis
zum Abrufen geplanter Laufzeitinformationen wurde zuWorkInfo
hinzugefügt. (I797e4)- Informationen zur anfänglichen Verzögerung und Periodizität werden
WorkInfo
hinzugefügt. (I52f2f) - Zusätzliche Methode, die Worker über Abläufe mit den Methoden
getWorkInfosByTagFlow
,getWorkInfoByIdFlow
,getWorkInfosForUniqueWorkFlow
,getWorkInfosFlow
(If122a) beobachtet - Fehlende Anmerkungen
@RequiresApi(...)
zuConstraints
hinzugefügt Konstruktoren und Eigenschaften. Sie sind jetzt an die entsprechenden Anmerkungen der Setter inConstraints.Builder
ausgerichtet, die aus frühen Versionen vonWorkManager
stammen. (I6d7d2) - In
WorkManager
gibt es jetzt ein separates Limit für Inhalts-URI-Worker, um ihnen garantierte Slots inJobScheduler
zu gewähren. So wird verhindert, dass unter der hohen Auslastung fehlende Inhaltsupdates 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
wurde veröffentlicht. Version 2.9.0-rc01 enthält diese Commits.
- Keine Änderungen seit dem letzten Betarelease
Version 2.9.0-beta01
6. September 2023
androidx.work:work-*:2.9.0-beta01
wurde veröffentlicht. Version 2.9.0-beta01 enthält diese Commits.
API-Änderungen
- Konstanten für Haltestellengründe hinzugefügt, die von
WorkInfo.stopReason
undListenableWorker.stopReason
(I0cc00) zurückgegeben werden
Version 2.9.0-alpha02
26. Juli 2023
androidx.work:work-*:2.9.0-alpha02
wurde veröffentlicht. Version 2.9.0-alpha02 enthält diese Commits.
Neue Funktionen
- Jetzt gibt
WorkManager
einen Hinweis darauf, warum ein Worker zuvor beendet wurde. Sie kann von einem Worker selbst über die MethodegetStopReason()
oder vonWorkInfo
übergetStopReason()
abgefragt werden.
API-Änderungen
stopReason
wurdeWorkInfo
hinzugefügt. Nach der Ausführung des Workers werdenstopReason
verfügbar gemacht. Es könnte hilfreich sein,stopReason
für die Berichterstellung zu verwenden, da eine Anwendung nach dem Beenden eines Workers schnell beendet werden kann. (I21386)- Zulassen, dass die Uhr über die Konfiguration eingestellt und zum Steuern der Ausführungsabfolge von Worker-Tests verwendet wird. (IC586e)
- Die Methode
getStopReason()
wurde zuListenableWorker
hinzugefügt, die einen Hinweis darauf gibt, warum der Worker beendet wurde. (I07060) WorkManagerTestInitHelper#closeWorkDatabase()
wurde hinzugefügt, um die Warnung von Closeguard zu gehackten Ressourcen zu vermeiden. (Ia8d49)
Fehlerkorrekturen
- Es besteht jetzt die Möglichkeit,
overrideNextScheduleTime
mithilfe vonTestDriver
zu umgehen und Probleme mit der Testbarkeit wurden behoben. (IC2905)
Version 2.9.0-alpha01
7. Juni 2023
androidx.work:work-*:2.9.0-alpha01
wurde veröffentlicht. Version 2.9.0-alpha01 enthält diese Commits.
Neue Funktionen
- Beobachtbarkeit über
Flow
-s. Anstelle vonLiveData
kann der Fortschritt von Workern nun über Abläufe überWorkManager.getWorkInfosFlow
und ähnliche Methoden beobachtet werden. - Genaue Planung der Mitarbeiter, die regelmäßig arbeiten, über
setNextScheduleTimeOverride
. Dies ermöglicht eine dynamische Berechnung des nächsten regelmäßigen Arbeitsplans, der verwendet werden kann, um erweiterte Funktionen wie adaptive Aktualisierungszeiten, benutzerdefinierte Wiederholungsverhalten zu implementieren oder einen Newsfeed-Worker auszuführen, bevor der Nutzer jeden Morgen ohne Drift aufwacht.ExistingPeriodicWorkPolicy.UPDATE
sollte zusammen mit diesen Techniken verwendet werden, um zu verhindern, dass ein derzeit ausgeführter Worker bei der Planung des nächsten Workers abgebrochen wird. - Tests von
WorkManager
mit Threading-Abgleich im Produktionsbereich. MitExecutorsMode.PRESERVE_EXECUTORS
können die inConfiguration
festgelegten Executors beibehalten und der echte Hauptthread verwendet werden. - Coroutines-APIs wie
CoroutineWorker
wurden vom zusätzlichen Artefaktwork-runtime-ktx
in das Hauptartefaktwork-runtime
verschoben. „work-runtime-ktx
“ ist jetzt leer.
API-Änderungen
- Der Konstruktor von
WorkInfo
ist jetzt öffentlich, das kann beim Testen nützlich sein. (Ia00b6, b/209145335) work-runtime-ktx
ist jetzt leer,CoroutineWorker
und andere kotlin-spezifische Dienstprogramme sind jetzt im Hauptartefakt vonwork-runtime
verfügbar. (I71a9a)- Die Methode
setNextScheduleTimeOverride
wurde hinzugefügt, die das genaue Festlegen regelmäßiger Arbeitspläne (I3b4da) ermöglicht. getEarliestRunTimeMillis
wurde ingetNextScheduleTimeMillis
umbenannt. (I2bd7a)- Informationen zur nächsten geplanten Laufzeit werden zu
WorkInfo
hinzugefügt. (I797e4) - Informationen zur anfänglichen Verzögerung und Periodizität werden zu
WorkInfo
hinzugefügt. (I52f2f) - Zusätzliche Methode, die Worker über Abläufe mit den Methoden
getWorkInfosByTagFlow
,getWorkInfoByIdFlow
,getWorkInfosForUniqueWorkFlow
,getWorkInfosFlow
(If122a) beobachtet - Fehlende Anmerkungen
@RequiresApi(...)
zu Einschränkungen hinzugefügt Konstruktoren und Eigenschaften. Sie sind jetzt an die entsprechenden Anmerkungen der Setter inConstraints.Builder
ausgerichtet, die aus frühen Versionen vonWorkManager
stammen. (I6d7d2) - In
WorkManager
gibt es jetzt ein separates Limit für Inhalts-URI-Worker, um ihnen garantierte Slots inJobScheduler
zu gewähren. So wird verhindert, dass unter der hohen Auslastung fehlende Inhaltsupdates fehlen. Das 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
wurde veröffentlicht. Version 2.8.1 enthält diese Commits.
Fehlerkorrekturen
- Der ANR-Fehler in
RescheduleReceiver
wurde behoben, bei dem zwei simultane Übertragungen zuvor nicht korrekt verarbeitet wurden. (b/236906724)
Version 2.8.0
8. Februar 2023
androidx.work:work-*:2.8.0
wurde veröffentlicht. 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
unaufdringlich zu aktualisieren, wobei die ursprüngliche Warteschlangenzeit, Verkettung usw. beibehalten werden. Weitere Informationen finden Sie im detaillierten Blogpost zu dieser Funktion sowie in den Javadocs fürWorkManager.updateWork
undExistingPeriodicWorkPolicy.UPDATE
.
API-Änderungen
WorkManager.updateWork
wurde hinzugefügt, um Arbeit zu aktualisieren, wobei die ursprüngliche Zeit und Verkettung in der Warteschlange beibehalten wurden.(I9a248, b/219446409)ExistingPeriodicWorkPolicy.UPDATE
wurde hinzugefügt. Mit dieser Richtlinie lässt sich ein regelmäßig ausgeführtes Werk anhand des Namens aktualisieren. Sie ähnelt dem vorhandenenREPLACE
, ist aber weniger aufdringlich: Ein Worker wird nicht abgebrochen, wenn er gerade ausgeführt wird, und die Warteschlangenzeit wird beibehalten. Die anfängliche Verzögerung und Periode werden anhand der ursprünglichen Zeit der Warteschlange und nicht der Aktualisierungszeit berechnet.REPLACE
wurde eingestellt, um 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)- Möglichkeit hinzugefügt, Planungsausnahmen abzufangen, indem
Consumer<Throwable>
über setSchedulingExceptionHandler bereitgestellt wird - Es wurde die Möglichkeit hinzugefügt,
Consumer<Throwable>
über setInitializationExceptionHandler anzugeben, um festzustellen, ob beim Initialisieren von WorkManager Probleme aufgetreten sind. - Inline-Assistenten 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 zu „Worker
“ hinzugefügt. (Ic1ead) RxWorker
für RxJava 2 und RxJava 3 hat jetztsetForeground
, dasCompletable
zurückgibt, der anstelle vonsetForegroundInfoAsync
verwendet werden kann, dasListenableFuture
zurückgibtRxWorker
für RxJava 2 und RxJava 3 hatgetForegroundInfo
, dasSingle
zurückgibt. Dieses kann anstelle vongetForegroundInfoAsync
verwendet werden, dasListenableFuture
zurückgibt. (b/203851459)- Einschränkungen können jetzt direkt erstellt werden, anstatt
Constraints.Builder
zu verwenden, was für Kotlin-Nutzer praktisch ist. (Idc390, b/137568653) - Neue Funktion, mit der geprüft werden kann, 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 gierig-Planer, der verhinderte, dass Worker unter Last sofort ausgeführt wurden, wurde behoben. (I9686b, b/248111307)
@RequiresPermission
wurde APIs hinzugefügt, für die die BerechtigungPOST_NOTIFICATIONS
ab SDK 33 erforderlich ist. (Ie542e, b/238790278)- Bei Verwendung von
suspendCancellableCoroutine
Stornierungen inCoroutineScope
anListenableFuture
weitergeben.
Version 2.8.0-rc01
7. Dezember 2022
androidx.work:work-*:2.8.0-rc01
wurde veröffentlicht. Version 2.8.0-rc01 enthält diese Commits.
Neue Funktionen
- Keine neuen Funktionen in dieser Version. Es handelt sich in erster Linie um einen Versionssprung,
Version 2.8.0-beta02
9. November 2022
androidx.work:work-*:2.8.0-beta02
wurde veröffentlicht. Version 2.8.0-beta02 enthält diese Commits.
Fehlerkorrekturen
- Die Methode
equals
inWorkInfo
wurde korrigiert, bei der zuvor keine Informationen zur neuen Generation berücksichtigt wurden. (4977cc)
Version 2.8.0-beta01
5. Oktober 2022
androidx.work:work-*:2.8.0-beta01
wurde veröffentlicht. Version 2.8.0-beta01 enthält diese Commits.
Fehlerkorrekturen
- Ein Problem mit dem gierig-Planer, der verhinderte, dass Worker unter Last sofort ausgeführt wurden, wurde behoben. (I9686b, b/248111307)
Version 2.8.0-alpha04
7. September 2022
androidx.work:work-*:2.8.0-alpha04
wurde veröffentlicht. Version 2.8.0-alpha04 enthält diese Commits.
API-Änderungen
WorkerInfo.getGeneration()
undWorkerParameters.getGeneration()
wurden hinzugefügt, die die Generierung eines Workers zurückgeben. Ein Worker hat mehrere Generationen, wenn er überWorkManager.updateWork
oderWorkManager.enqueueUniquePeriodicWork
mitExistingPeriodicWorkPolicy.UPDATE
aktualisiert wurde. Wenn der Worker derzeit ausgeführt wird, kann diese Methode eine neuere Generation von der des aktuell ausgeführten Workers zurückgeben, wenn während der Ausführung des Workers eine Aktualisierung stattgefunden hat. (I665c5, b/219446409) (I128a9, b/219446409)InitializationExceptionHandler
wurde hinzugefügt, ein Ausnahme-Handler, mit dem festgestellt werden kann, ob beim Initialisieren vonWorkManager
Probleme aufgetreten sind. (I061de)
Version 2.8.0-alpha03
10. August 2022
androidx.work:work-*:2.8.0-alpha03
wurde veröffentlicht. Version 2.8.0-alpha03 enthält diese Commits.
Neue Funktionen
- Es wurde eine Möglichkeit hinzugefügt,
WorkRequests
unaufdringlich zu aktualisieren, wobei die ursprüngliche Warteschlangenzeit, Verkettung usw. beibehalten werden. Weitere Informationen finden Sie unterWorkManager.updateWork
undExistingPeriodicWorkPolicy.UPDATE
.
API-Änderungen
WorkManager.updateWork
wurde hinzugefügt, um Arbeit zu aktualisieren, wobei die ursprüngliche Zeit und Verkettung in der Warteschlange beibehalten wurden.(I9a248, b/219446409)ExistingPeriodicWorkPolicy.UPDATE
wurde hinzugefügt. Mit dieser Richtlinie kann ein regelmäßig ausgeführtes Werk anhand des Namens aktualisiert werden. Sie ähnelt dem vorhandenenREPLACE
, ist aber weniger aufdringlich: Ein Worker wird nicht abgebrochen, wenn er gerade ausgeführt wird, und die Warteschlangenzeit wird beibehalten. Die anfängliche Verzögerung und Periode werden anhand der ursprünglichen Zeit der Warteschlange und nicht der Aktualisierungszeit berechnet.REPLACE
wurde eingestellt, um Verwechslungen zwischen sehr ähnlich heißenREPLACE
undUPDATE
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)- Fügen Sie die Möglichkeit hinzu, Planungsausnahmen abzufangen, indem Sie eine
SchedulingExceptionHandler
definieren. (I033eb) - Inline-Assistenten 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 gewährt werden muss. (Ie542e, b/238790278)
Version 2.8.0-alpha02
6. April 2022
androidx.work:work-*:2.8.0-alpha02
wurde veröffentlicht. Version 2.8.0-alpha02 enthält diese Commits.
API-Änderungen
- Einschränkungen können jetzt direkt erstellt werden, anstatt den Builder zu verwenden, was für Kotlin-Nutzer praktisch ist. (Idc390, b/137568653)
- Neue Funktion, mit der geprüft werden kann, 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
wurde veröffentlicht. Version 2.8.0-alpha01 enthält diese Commits.
API-Änderungen
- Hilfsmethoden
WorkQuery.fromStates
,WorkQuery.fromUniqueWorkNames
,WorkQuery.fromTags
wurden hinzugefügt, um WorkQuery direkt zu erstellen. (If48f2, b/199919736) - Zusätzliche experimentelle BuildCompat-Methoden für zukünftige SDKs (Iafd82, b/207528937)
getForegroundInfo
zuWorker
hinzufügen. (Ic1ead)- Hilfsmethoden
WorkQuery.fromIds
, um WorkQuery direkt aus IDs zu erstellen wurden hinzugefügt. (Ie5bdf, b/199919736) - RxWorker hat jetzt
setForeground
, derCompletable
zurückgibt, kann anstelle vonsetForegroundInfoAsync
verwendet werden, dasListenableFuture
. (I85156) - RxWorker für RxJava 2 hat jetzt
getForegroundInfo
, dasSingle
zurückgibt. kann anstelle vongetForegroundInfoAsync
verwendet werden, dasListenableFuture
. (I21c91, b/203851459) - RxWorker für RxJava 3 hat jetzt
getForegroundInfo
, dasSingle
zurückgibt. kann anstelle vongetForegroundInfoAsync
verwendet werden, dasListenableFuture
. (I1ca8a) - RxWorker hat jetzt
setForeground
, derCompletable
zurückgibt, kann anstelle vonsetForegroundInfoAsync
verwendet werden, dasListenableFuture
. (I992a3, b/203851459)
Fehlerkorrekturen
- Bei Verwendung von
suspendCancellableCoroutine
Stornierungen inCoroutineScope
anListenableFuture
weitergeben. (I77e63)
Version 2.7
Version 2.7.1
17. November 2021
androidx.work:work-*:2.7.1
wurde veröffentlicht. Version 2.7.1 enthält diese Commits.
Fehlerkorrekturen
- Bei Verwendung von
suspendCancellableCoroutine
werden Stornierungen in derCoroutineScope
an dieListenableFuture
weitergegeben. (I77e63) - Eine Ausnahme wird sofort ausgelöst, wenn verzögerte Arbeitsanfragen als beschleunigt gekennzeichnet werden. bef1762
Version 2.7.0
13. Oktober 2021
androidx.work:work-*:2.7.0
wurde veröffentlicht. Version 2.7.0 enthält diese Commits.
Wichtige Änderungen seit Version 2.6.0
WorkManager führt eine neue
WorkRequest.Builder.setExpedited(...)
API ein, um die Einschränkungen von Diensten im Vordergrund in Android 12 zu vereinfachen.Bei der Verwendung von
setExpedited(...)
delegiert WorkManager ab Android 12 an Express-Jobs in JobScheduler. Gleichzeitig wird Abwärtskompatibilität zu früheren Versionen von Android durch Delegieren an einen Dienst im Vordergrund ermöglicht.
Version 2.7.0-rc01
29. September 2021
androidx.work:work-*:2.7.0-rc01
wurde veröffentlicht. 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
wurde veröffentlicht. Version 2.7.0-beta01 enthält diese Commits.
Neue Funktionen
- Reduzieren Sie Multi-Prozess-SQLite-Konflikte bei der Initialisierung von WorkManager.
API-Änderungen
@ExperimentalExpeditedWork
APIs entfernen, da die zugrunde liegenden Plattform-APIs für Android 12 (S) stabil sind. (aosp/1792806)
Fehlerkorrekturen
- Geben Sie eine bessere Fehlermeldung für Express-Worker an, die
getForegroundInfoAsync()
nicht implementieren. (aosp/1809376)
Version 2.7.0-alpha05
21. Juli 2021
androidx.work:work-*:2.7.0-alpha05
wurde veröffentlicht. Version 2.7.0-alpha05 enthält diese Commits.
Diese Version enthält außerdem Fehlerkorrekturen der WorkManager-Version 2.6.0-beta02
.
Version 2.7.0-alpha04
2. Juni 2021
androidx.work:work-*:2.7.0-alpha04
wurde veröffentlicht.
Diese Version enthält auch die Änderungen gegenüber dem Release 2.6.0-beta01.
API-Änderungen
ListenableWorker.setForegroundAsync()
wurde nicht mehr verworfen.- Wir empfehlen, nach Möglichkeit die
WorkRequest.Builder.setExpedited(...)
API zu verwenden. Entwickler können dieListenableWorker.setForegroundAsync()
API verwenden, um Situationen zu unterstützen, in denen für die App keine Einschränkungen für Dienste im Vordergrund gelten. - Wenn
ListenableWorker.setForegroundAsync()
aufgerufen wird und die App Einschränkungen für Dienste im Vordergrund unterliegt, wird die Ausnahme ForegroundServiceStartNotAllowedException ausgelöst.
Fehlerkorrekturen
- Wenn Express-Aufträge verschoben werden, werden sie nicht mehr beschleunigt. Sie werden zu normalen Jobs.
Version 2.7.0-alpha03
21. April 2021
androidx.work:work-*:2.7.0-alpha03
wurde veröffentlicht. 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)Von WorkManager
2.6.0-alpha02
: EinRemoteCoroutineWorker
wurde hinzugefügt. Dies ist eine Implementierung vonRemoteListenableWorker
, die an einen Remote-Prozess gebunden werden kann. (I30578)
API-Änderungen
- Von WorkManager
2.6.0-alpha02
:Die Unterstützung für die NetzwerkeinschränkungTEMPORARILY_UNMETERED
wurde hinzugefügt. (I08d5e) - Von WorkManager
2.6.0-alpha02
:Multi-Prozess-Worker-Unterstützung fürsetProgressAsync()
. (Ib6d08) - In WorkManager
2.6.0-alpha02
:Veröffentlichen SieWorkManagerInitializer
, damit andereandroidx.startup.Initializer
s sie als Abhängigkeiten verwenden können. (I5ab11)
Version 2.7.0-alpha02
10. März 2021
androidx.work:work-*:2.7.0-alpha02
wurde veröffentlicht. Version 2.7.0-alpha02 enthält diese Commits.
Fehlerkorrekturen
- Machen Sie 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
wurde veröffentlicht. Version 2.7.0-alpha01 enthält diese Commits.
Neue Funktionen
WorkManager führt eine neue
WorkRequest.Builder.setExpedited(...)
API ein, um die Einschränkungen von Diensten im Vordergrund in Android 12 zu berücksichtigen.Apps können keine Dienste im Vordergrund mehr starten, wenn sie im Hintergrund ausgeführt werden. Daher können Anwendungen
WorkRequest
s als expedited kennzeichnen, um länger andauernde Vorgänge, die zuvor an den Lebenszyklus eines Diensts im Vordergrund gebunden waren, besser zu unterstützen.Diese API ist ein Ersatz für die APIs
setForegroundAsync(...)
undsetForeground(...)
, die inzwischen verworfen wurden.Bei der Verwendung von
setExpedited(...)
delegiert WorkManager ab Android 12 an beschleunigte Jobs inJobScheduler
und bietet Abwärtskompatibilität zu früheren Versionen von Android, indem er an Dienste im Vordergrund delegiert wird.
API-Änderungen
- Unterstützung für Express-
WorkRequest
s hinzufügen.
Version 2.6.0
Version 2.6.0
1. September 2021
androidx.work:work-*:2.6.0
wurde veröffentlicht. Version 2.6.0 enthält diese Commits.
Wichtige Änderungen seit Version 2.5.0
WorkManager verwendet jetzt
androidx.startup
, um WorkManager zu initialisieren. Wenn Sie in der Vergangenheittools:node="remove"
dasContentProvider
verwendet haben, das zum Initialisieren von WorkManager verwendet wurde, gehen Sie stattdessen so vor:<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" />
Zusätzliche Unterstützung für Worker, die in jedem Prozess ausgeführt werden können. (Iaf200)
Ein
RemoteCoroutineWorker
wurde hinzugefügt. Dies ist eine Implementierung von RemoteListenableWorker, die an einen Remoteprozess gebunden werden kann. (I30578)
Version 2.6.0-rc01
4. August 2021
androidx.work:work-*:2.6.0-rc01
wurde veröffentlicht. 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
wurde veröffentlicht. Version 2.6.0-beta02 enthält diese Commits.
Fehlerkorrekturen
RemoteWorkManager
hebt die Bindung anRemoteWorkManagerService
jetzt korrekt auf, wodurchRemoteWorkManagerService
korrekt bereinigt werden kann. aosp/1730694RemoteListenableWorker
hebt die Bindung anRemoteWorkerService
jetzt korrekt auf, wodurchRemoteWorkerService
korrekt bereinigt werden kann. aosp/1743817ForceStopRunnable
wird jetzt nur im primären Anwendungsprozess ausgeführt. Dies ist eine Optimierung und vermeidet Ressourcenkonflikte bei Apps, die mehrere Prozesse verwenden. aosp/1749180, aosp/1761729
Version 2.6.0-beta01
2. Juni 2021
androidx.work:work-*:2.6.0-beta01
wurde veröffentlicht. Version 2.6.0-beta01 enthält diese Commits.
Diese Version enthält einige kleinere Dokumentationsverbesserungen. 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
wurde veröffentlicht. Version 2.6.0-alpha02 enthält diese Commits.
Neue Funktionen
Zusätzliche Unterstützung für Worker, die in jedem Prozess 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
- Unterstützung für die Netzwerkeinschränkung
TEMPORARILY_UNMETERED
wurde hinzugefügt. (I08d5e) - Multi-Prozess-Worker-Unterstützung für
setProgressAsync()
. (Ib6d08) - Machen Sie
WorkManagerInitializer
öffentlich, damit andereandroidx.startup.Initializer
s sie als Abhängigkeiten verwenden können. (I5ab11)
Version 2.6.0-alpha01
24. März 2021
androidx.work:work-*:2.6.0-alpha01
wurde veröffentlicht. Version 2.6.0-alpha01 enthält diese Commits.
Neue Funktionen
WorkManager
verwendet jetztandroidx.startup
, um WorkManager zu initialisieren. Zuvor wurde dies vonandroidx.work.impl.WorkManagerInitializer
durchgeführt. (aosp/1608813)Wenn Sie
tools:node="remove"
verwendet haben, wird dieContentProvider
zum Initialisieren verwendet in der Vergangenheit durchgeführt haben, dann müssen Sie stattdessen Folgendes tun.<provider android:name="androidx.startup.InitializationProvider" android:authorities=\"${applicationId}.androidx-startup" android:exported="false" tools:node=\"merge"> <!-- If you are using androidx.startup to initialize other components --> <meta-data android:name="androidx.work.impl.WorkManagerInitializer" android:value="androidx.startup" tools:node="remove" /> </provider>
(oder)
<!-- If you want to disable android.startup completely. --> <provider android:name="androidx.startup.InitializationProvider" android:authorities="${applicationId}.androidx-startup" tools:node="remove"> </provider>
API-Änderungen
- Fügen Sie eine
Result.getOutputData()
API hinzu, die denoutputData
des ListenableWorkers zurückgibt. (Ie51e3)
Fehlerkorrekturen
- Fügen Sie eine Behelfslösung für einen OEM-Fehler hinzu, der dazu führt, dass bei der 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
wurde veröffentlicht. Version 2.5.0 enthält diese Commits.
Große Änderungen seit Version 2.4.0
- Ein neues
:work:work-multiprocess
-Artefakt für Anwendungen, die mehrere Prozesse verwenden. Dies führt zu einer Leistungssteigerung, da die Planung von Arbeitsanfragen mit einem einzigen Prozess vereinheitlicht wird.- Definieren Sie zur Verwendung von
work-multiprocess
eine Abhängigkeit von:implementation "androidx.work:work-multiprocess:2.5.0"
- Legen Sie mithilfe von Configuration.Builder.setDefaultProcessName(String) einen primären Prozess fest.
- Wenn du
work-multiprocess
verwendest, solltest du auch RemoteWorkManager zur Verwaltung deinerWorkRequest
nutzen. RemoteWorkManager wendet sich immer an den vorgesehenen Prozess. Der in Bearbeitung befindliche Planer wird ebenfalls im vorgesehenen Prozess ausgeführt.
- Definieren Sie zur Verwendung von
- Manchmal kann
ActivityManager
die InstanzJobService
nicht instanziieren, um einen Job zu starten. Dies führt dazu, dass der zugrunde liegende Job aufgrund eines Plattformfehlers automatisch verworfen wird.WorkManager
stellt jetzt sicher, dass für jede einzelneWorkRequest
Sicherungsjobs 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 Wachstum der Datenbank, indem die Pufferdauer reduziert wird, dieWorkRequest
s nach Abschluss einerWorkRequest
verfolgt werden. Die Dauer betrug zuvor7
Tage. Er wurde auf1
Tag + die keepResultsForAtLeast-Dauer reduziert. (aosp/1419708)- Die
TestListenableWorkerBuilder
unterstützt jetzt die reifizierte Klasse, dieListenableWorker
erweitert, um das Testen zu vereinfachen. (aosp/1443299, b/169787349) - Der WorkManager Inspector ist jetzt in Android Studio Arctic Fox verfügbar.
Version 2.5.0-rc01
13. Januar 2021
androidx.work:work-*:2.5.0-rc01
wurde veröffentlicht. 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 verursacht bei einigen Motorola-Geräten Probleme. (aosp/1535368, b/175944460)
- Es wurde ein Fehler behoben, durch den
NoSuchElementException
s beim Aufheben der Bindung von einem inaktiven Prozess ignoriert werden. (aosp/1530589) - Verbessern Sie
ConstraintTrackingWorker
, damit eineListenableWorker
nur beendet wird, wenn sie nicht bereits angehalten wurde. (aosp/1496844, b/172946965) - androidx.work-Bibliotheken auf Java 8 (Ibd2f2) aktualisieren
Version 2.5.0-beta02
2. Dezember 2020
androidx.work:work-*:2.5.0-beta02
wurde veröffentlicht. Version 2.5.0-beta02 enthält diese Commits.
Fehlerkorrekturen
- Es wurde ein Fehler in
androidx.work:work-multiprocess
behoben, bei dem WorkManager beim Versuch, eine Bindung an den vorgesehenen Prozess herzustellen, versehentlich den aufrufenden Thread blockierte. (aosp/1475538) - Ein Fehler wurde behoben, bei dem
PeriodicWorkRequest
s nicht richtig abgeglichen wurden. (b/172475041, aosp/1489577) - Es wurde eine Problemumgehung für einen Plattformfehler hinzugefügt, wenn der Dienst im Vordergrund bei Verwendung der
setForeground*
APIs beendet wird. (b/170924044, aosp/1489901)
Version 2.5.0-beta01
28. Oktober 2020
androidx.work:work-*:2.5.0-beta01
wurde veröffentlicht. Version 2.5.0-beta01 enthält diese Commits.
Neue Funktionen
WorkManager
drosselt automatisch die Anzahl derWorkRequest
s, die vom Planer während der Verarbeitung erfasst werden können. Die Anforderungen 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 neu geplant werden können. (aosp/1455618, b/170273988)
Version 2.5.0-alpha03
14. Oktober 2020
androidx.work:work-*:2.5.0-alpha03
wurde veröffentlicht. Version 2.5.0-alpha03 enthält diese Commits.
API-Änderungen
TestListenableWorkerBuilder
undTestWorkerBuilder
verwenden keine Rohtypen. (I883ad, b/169787349)
Fehlerkorrekturen
- Verwenden Sie
ApplicationInfo
, um den Namen des Standardanwendungsprozesses zu bestimmen. (b/168716641, aosp/1429950) - Korrigieren Sie die Sichtbarkeitsregeln für
RemoteWorkManager
undRemoteWorkContinuation
. Diese APIs sind nicht mehr als@Restricted
gekennzeichnet. (aosp/1432091) - ProGuard-Regeln für
:work:work-multiprocess
wurden korrigiert. (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
wurde veröffentlicht. Version 2.5.0-alpha02 enthält diese Commits.
Neue Funktionen
- Fügen Sie eine API zu WorkQuery hinzu, damit Sie
id
s zum Abfragen vonWorkInfo
s verwenden können. (aosp/1412372, b/157335295) - WorkManager unterstützt Apps, die mehrere Prozesse verwenden, besser mit einem neuen Artefakt (
androidx.work:work-multiprocess:*
). Dieses neue Artefakt hilft bei der Lösung einiger Probleme, die bei großen Anwendungen auftreten können, darunter:- WorkManager muss in der Regel bei jedem App-Prozess initialisiert werden. Dies ist nicht großartig, da es zu vermehrten SQLite-Konflikten gibt, die wiederum andere Probleme verursachen. WorkManager hat jetzt neue APIs, mit denen mithilfe von
Configuration#setDefaultProcessName(processName)
ein primärer App-Prozess festgelegt werden kann.processName
ist ein voll qualifizierter Prozessname im FormatpackageName:processName
(z.B.com.example:remote
). - Eine Reihe neuer APIs:
RemoteWorkManager
undRemoteWorkContinuation
zuenqueue
-,cancel
- undquery
-Arbeitsanfragen. Diese APIs enthalten keineLiveData
-Varianten, um SQLite-Konflikte über mehrere Prozesse hinweg zu vermeiden. Alle Aufrufe anenqueue
,cancel
undquery
werden mithilfe von AIDL an einenprimary
-Anwendungsprozess weitergeleitet und gebenListenableFuture
fließend zurück. (aosp/1392657, aosp/1411210 aosp/1412215, aosp/1417713)
- WorkManager muss in der Regel bei jedem App-Prozess initialisiert werden. Dies ist nicht großartig, da es zu vermehrten SQLite-Konflikten gibt, die wiederum andere Probleme verursachen. WorkManager hat jetzt neue APIs, mit denen mithilfe von
API-Änderungen
- In WorkManager werden abgeschlossene
WorkRequest
s, die keine unvollständigen Abhängigkeiten haben, jetzt aggressiver bereinigt. Die Pufferdauer wurde von7
Tagen in1
Tag geändert. (aosp/1419708)
Fehlerkorrekturen
- WorkManager gleicht Jobs proaktiv ab, sodass
WorkRequest
s 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
wurde veröffentlicht. Version 2.5.0-alpha01 enthält diese Commits.
Neue Funktionen
- Änderungen an internen APIs, durch die wir künftig bessere Tools für
WorkManager
bereitstellen können. Wir halten dich auf dem Laufenden.
Fehlerkorrekturen
SecurityException
s beim Erfassen des Netzwerkstatus auf einigen Geräten verarbeiten. (aosp/1396969)
Externer Beitrag
- Die Dokumentation für
ArrayCreatingInputMerger
von Zac Sweers (github/43) wurde korrigiert.
Version 2.4.0
Version 2.4.0
22. Juli 2020
androidx.work:work-*:2.4.0
wurde veröffentlicht. Version 2.4.0 enthält diese Commits.
Große Änderungen seit Version 2.3.0
- Der Prozess des Planers von
WorkManager
ist jetzt leistungsfähiger. Zuvor hat der in Bearbeitung befindlicheScheduler
nur die Ausführung von Arbeiten berücksichtigt, die nicht verzögert waren und deren Einschränkungen erfüllt wurden. Jetzt verfolgt der Planer in BearbeitungWorkRequest
s, die möglicherweise in Zukunft ausgeführt werden, einschließlich PeriodicWorkRequests. Das in Bearbeitung befindlicheScheduler
unterliegt ebenfalls keinen Zeitplanbeschränkungen, ist jedoch auf die Größe des vom WorkManager verwendetenExecutor
beschränkt. Das bedeutet, dass die Anwendung jetzt viel mehr WorkRequests ausführen kann, wenn sie im Vordergrund ausgeführt wird. Zur Verwaltung der Ausführung verzögerter Arbeiten im Vordergrund hatWorkManager
außerdem eine neue konfigurierbareRunnableScheduler
eingeführt. (aosp/1185778) - WorkManager unterstützt jetzt RxJava 3. Um RxJava 3 zu verwenden, müssen Sie die folgende Abhängigkeit einschließen:
implementation "androidx.work:work-rxjava3:2.4.0"
. (aosp/1277904) - Neue Funktion zur Abfrage von
WorkInfo
s mithilfe vonWorkQuery
. Dies ist nützlich, wenn EntwicklerWorkInfo
s mit einer Kombination aus mehreren Attributen abfragen möchten. Weitere Informationen findest du unterWorkQuery.Builder.fromStates(...)
,WorkQuery.Builder. fromTags(...)
oderWorkQuery.Builder.fromUniqueWorkNames(...)
. (aosp/1253230, b/143847546) Fügen Sie die Funktion hinzu, mit der Diagnoseinformationen von
WorkManager
angefordert werden können:adb shell am broadcast -a "androidx.work.diagnostics.REQUEST_DIAGNOSTICS" -p "<your_app_package_name>"
So erhalten Sie viele nützliche Informationen, z. B.:
- WorkRequests, die in den letzten 24 Stunden abgeschlossen wurden.
- WorkRequests, die gerade AUSGEFÜHRT werden.
- Geplante WorkRequests. (aosp/1235501)
Fügen Sie
ExistingWorkPolicy.APPEND_OR_REPLACE
hinzu. Dies ähneltAPPEND
, ersetzt aber eine Kette, die die Voraussetzungen nicht erfüllt oder nicht erfüllt hat. (b/134613984, aosp/1199640)Sie bieten die Möglichkeit, eine benutzerdefinierte
RunnableScheduler
hinzuzufügen, um WorkRequests zu verfolgen, die in Zukunft ausgeführt werden müssen. Diese wird vom In-Process-Planer verwendet. (aosp/1203944)Unterstützung für das dynamische Hinzufügen von Factorys, an die delegiert werden soll, bei Verwendung eines
DelegatingWorkerFactory
. (b/156289105, aosp/1309745)Richten Sie das Tracking für
BATTERY_NOT_LOW
-Einschränkungen enger an der Plattform aus. (aosp/1312583)Der In-Process-Planer verwendet jetzt bessere APIs, um den Namen des Prozesses zu bestimmen. Dies ist nützlich, um Apps mit mehreren Prozessen besser zu unterstützen. (aosp/1324732)
Neue Lint-Regeln, die Folgendes erzwingen:
- Verwendung des richtigen
foregroundServiceType
bei Verwendung vonsetForegroundAsync()
APIs (b/147873061, aosp/1215915) - Angabe von JobScheduler-IDs, die WorkManager bei der direkten Verwendung von JobService APIs verwenden soll. aosp/1223567
- Es wurde eine neue Lint-Regel hinzugefügt, die dafür sorgt, dass
ListenableWorker
Implementierungen jetztpublic
sind, wenn die StandardeinstellungWorkerFactory
verwendet wird. (aosp/1291262)
- Verwendung des richtigen
setForegroundAsync()
-Aufrufe, 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 die
ForegroundService
nicht angehalten wurde, nachdem einWorker
im Vordergrund unterbrochen wurde. (b/155579898, aosp/1302153)Es wurde ein 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
wurde veröffentlicht. Version 2.4.0-rc01 enthält diese Commits.
Fehlerkorrekturen
- Der In-Process-Planer verwendet jetzt bessere APIs, um den Namen des Prozesses zu bestimmen. Dies ist nützlich, um Apps mit mehreren Prozessen besser zu unterstützen. (aosp/1324732)
Version 2.4.0-beta01
20. Mai 2020
androidx.work:work-gcm:2.4.0-beta01
, androidx.work:work-runtime:2.4.0-beta01
, androidx.work:work-runtime-ktx:2.4.0-beta01
, androidx.work:work-rxjava2:2.4.0-beta01
und androidx.work:work-testing:2.4.0-beta01
wurden veröffentlicht. Version 2.4.0-beta01 enthält diese Commits.
Fehlerkorrekturen
- Es wurde ein Fehler behoben, bei dem die
ForegroundService
nicht angehalten wurde, nachdem einWorker
im Vordergrund unterbrochen wurde. (b/155579898, aosp/1302153) - Es wurde ein Fehler behoben, bei dem
WorkManager
versucht, mehrere Instanzen einerWorker
auszuführen, die an einen Dienst im Vordergrund gebunden ist (b/156310133, aosp/1309853). - Unterstützung für das dynamische Hinzufügen von Factorys, an die delegiert werden soll, bei Verwendung eines
DelegatingWorkerFactory
. (b/156289105, aosp/1309745) - Richten Sie das Tracking für
BATTERY_NOT_LOW
-Einschränkungen enger an der Plattform aus. (aosp/1312583)
Version 2.4.0-alpha03
29. April 2020
androidx.work:work-*:2.4.0-alpha03
wurde veröffentlicht. Version 2.4.0-alpha03 enthält diese Commits.
Neue Funktionen
- WorkManager unterstützt jetzt RxJava 3. Um RxJava 3 zu verwenden, müssen Sie die folgende Abhängigkeit einschließen:
implementation "androidx.work:work-rxjava3:2.4.0-alpha03"
. (aosp/1277904) - Es wurde eine neue Lint-Regel hinzugefügt, die dafür sorgt, dass
ListenableWorker
Implementierungen jetztpublic
sind, wenn die StandardeinstellungWorkerFactory
verwendet wird. (aosp/1291262)
API-Änderungen
- Der Aufruf von
setProgressAsync()
nach Abschluss einerListenableWorker
-Ausführung signalisiert jetzt einException
überListenableFuture
. (aosp/1285494) WorkQuery.Builder
ist jetzt alsfinal
gekennzeichnet. (aosp/1275037)- Die
WorkQuery.Builder
-Factory-MethodenwithStates
,withTags
undwithUniqueWorkNames
wurden infromStates
,fromTags
undfromUniqueWorkNames
umbenannt. (aosp/1280287)
Fehlerkorrekturen
SecurityException
s beim Verfolgen des Netzwerkstatus eines Geräts ignorieren. (b/153246136, aosp/1280813)
Version 2.4.0-alpha02
1. April 2020
androidx.work:work-*:2.4.0-alpha02
wurde veröffentlicht. Version 2.4.0-alpha02 enthält diese Commits.
Neue Funktionen
- Es wurde eine neue Lint-Regel hinzugefügt, die warnt, wenn für
WorkRequest
sowohlConstraints.setRequiresCharging(...)
als auchConstraints.setRequiresDeviceIdle(...)
erforderlich sind. Einige Geräte werden nie geladen und inaktiv. Solche Anfragen würden daher seltener als erwartet ausgeführt. (aosp/1253840)
API-Änderungen
Neue Funktion zur Abfrage von
WorkInfo
s mithilfe vonWorkQuery
. Dies ist nützlich, wenn EntwicklerWorkInfo
s mit einer Kombination aus mehreren Attributen abfragen möchten. Weitere Informationen findest du unterWorkQuery.Builder withStates(...)
,WorkQuery.Builder withTags(...)
oderWorkQuery.Builder withUniqueWorkNames(...)
. (aosp/1253230, b/143847546)setForegroundAsync()
-Aufrufe, 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
wurde veröffentlicht. Version 2.4.0-alpha01 enthält diese Commits.
Neue Funktionen
Der Prozess des Planers von
WorkManager
ist jetzt leistungsfähiger. Zuvor hat der Prozessplaner nur die Ausführung von Arbeiten berücksichtigt, die nicht verzögert wurden und deren Einschränkungen erfüllt wurden. Jetzt verfolgt der Planer in BearbeitungWorkRequest
s, die möglicherweise in Zukunft ausgeführt werden, einschließlichPeriodicWorkRequest
s. Der in Bearbeitung befindliche Planer hält außerdem keine Planungslimits ein, ist aber auf die Größe des vom WorkManager verwendetenExecutor
beschränkt. Das bedeutet, dass die Anwendung jetzt viel mehrWorkRequest
s ausführen kann, wenn sie im Vordergrund ausgeführt wird. (aosp/1185778)Es besteht jetzt die Möglichkeit, mit
adb shell am broadcast -a "androidx.work.diagnostics.REQUEST_DIAGNOSTICS" -p "<your_app_package_name>"
Diagnoseinformationen vom WorkManager anzufordern. So erhalten Sie viele nützliche Informationen, z. B.:- WorkRequests, die in den letzten 24 Stunden abgeschlossen wurden.
- WorkRequests, die gerade AUSGEFÜHRT werden.
- Geplante WorkRequests. (aosp/1235501)
Neue Lint-Regeln, die Folgendes erzwingen:
- Verwendung des richtigen
foregroundServiceType
bei Verwendung vonsetForegroundAsync()
APIs (b/147873061, aosp/1215915) - Angabe von
JobScheduler
-IDs, dieWorkManager
verwenden soll, wennJobService
APIs direkt verwendet werden. (aosp/1223567)
- Verwendung des richtigen
API-Änderungen
Fügen Sie
ExistingWorkPolicy.APPEND_OR_REPLACE
hinzu. Dies ähneltAPPEND
, ersetzt aber eine Kette, die die Voraussetzungen nicht erfüllt oder nicht erfüllt ist. (b/134613984, aosp/1199640)Sie können eine benutzerdefinierte
RunnableScheduler
zum Verfolgen vonWorkRequest
s hinzufügen, die in Zukunft ausgeführt werden müssen. Diese wird vom In-Process-Planer verwendet. (aosp/1203944)
Fehlerkorrekturen
setProgress()
wurde inRxWorker
eingestellt, da zuvor einSingle<Void>
-Wert zurückgegeben wurde, der nicht möglich war. Eine neue API-setCompletableProgress()
wurde hinzugefügt, die stattdessen eineCompletable
zurückgibt. und neue Lint-Regeln hinzugefügt, die die Migration zu den neuen APIs erleichtern. (b/150080946, aosp/1242665)
Version 2.3.4
Version 2.3.4
18. März 2020
androidx.work:work-*:2.3.4
wurde veröffentlicht. Version 2.3.4 enthält diese Commits.
Fehlerkorrekturen
- Es wurde ein Fehler behoben, bei dem nach Überschreiten des Ausführungsfensters von 10 Minuten mehrere Instanzen von
Worker
s mit langer Ausführungszeit ausgeführt wurden. (aosp/1247484, b/150553353) - Korrektur des Lint-
IssueRegistry
von WorkManager. Vielen Dank für den Beitrag, @ZacSweers von Slack. (aosp/1217923)
Version 2.3.3
Version 2.3.3
4. März 2020
androidx.work:work-*:2.3.3
wurde veröffentlicht. Version 2.3.3 enthält diese Commits.
Fehlerkorrekturen
- Es wurde ein Fehler behoben, bei dem eine
Worker
nicht korrekt neu geplant wurde, wenn sie unterbrochen wurde. (b/150325687, aosp/1246571)
Version 2.3.2
Version 2.3.2
19. Februar 2020
androidx.work:work-*:2.3.2
wurden freigegeben. Version 2.3.2 enthält diese Commits.
Fehlerkorrekturen
- Behebt ein Problem, 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 von Diensten im Vordergrund für die Verwaltung von Workern mit langer Ausführungszeit wurde verbessert. (aosp/1226295)
- Verbesserte Verwaltung der Kündigung von Benachrichtigungen für lange laufende Worker bei Löschung von Workern. (aosp/1228346)
Version 2.3.1
Version 2.3.1
5. Februar 2020
androidx.work:work-*:2.3.1
wurde veröffentlicht. Version 2.3.1 enthält diese Commits.
Fehlerkorrekturen
- Bessere Verwaltung des Lebenszyklus von
Notification
s für lang andauerndeWorker
s, die ausgeführt werden, wenn einService
im Vordergrund aktiv ist. (aosp/1218539, b/147249312) WorkManager
ist jetzt von der stabilenandroidx.sqlite:sqlite-framework:2.1.0
abhängig. (aosp/1217729)- Lint-Regeln wurden hinzugefügt, um sicherzustellen, dass eine
foregroundServiceType
in derAndroidManifest.xml
angegeben wird, wennforegroundServiceType
s inForegroundInfo
verwendet werden. (aosp/1214207, b/147873061)
Version 2.3.0
Version 2.3.0
22. Januar 2020
androidx.work:work-*:2.3.0
wurde ohne Änderungen seit dem 2.3.0-rc01
freigegeben. Version 2.3.0 enthält diese Commits.
Wichtige Änderungen seit Version 2.2.0
- Unterstützung für lange andauernde oder wichtige Aufgaben über
ListenableWorker#setForegroundAsync()
. - Unterstützung für Worker Progress über
ListenableWorker#setProgressAsync()
. - WorkManager bündelt jetzt zusätzliche Lint-Regeln als Teil der Bibliothek, wodurch Programmfehler frühzeitig erkannt werden.
Version 2.3.0-rc01
8. Januar 2020
androidx.work:work-*:2.3.0-rc01
wurde veröffentlicht. Version 2.3.0-rc01 enthält diese Commits.
Dieser Release ist mit 2.3.0-beta02
identisch.
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
wurde veröffentlicht. 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)
- Es wurde eine Lint-Regel hinzugefügt, die sicherstellt, dass der Contentanbieter
androidx.work.impl.WorkManagerInitializer
bei Verwendung der On-Demand-Initialisierung ausAndroidManifest.xml
entfernt wird. (aosp/1167007) - Es wurde eine Lint-Warnung hinzugefügt, wenn
enqueue()
stattenqueueUniquePeriodicWork()
fürPeriodicWorkRequest
verwendet wird. (aosp/1166032)
API-Änderungen
ForegroundInfo
erfordert jetzt die Angabe dernotificationId
, die bei Verwendung vonListenableWorker.setForegroundAsync()
verwendet werden soll. Das ist eine funktionsgefährdende Änderung. Auf diese Weise können Sie mehrere lang andauerndeWorker
s parallel ausführen.WorkManager
verwaltet auch die Lebensdauer der angegebenenNotification
s besser. (b/145473554, aosp/1181208, asop/1181216, asop/1183577)
Fehlerkorrekturen
- Ein Fehler in der AlarmManager-Implementierung, durch den Alarme nicht korrekt bereinigt wurden, wurde behoben. (aosp/1156444)
- Es wurde ein Fehler behoben, bei dem eine leere Liste mit
WorkRequest
s zum Erstellen einer falschenWorkContinuation
-Kette führte. (b/142835274, aosp/1157051)
Abhängigkeitsänderungen
- WorkManager verwendet jetzt Raum 2.2.2.
Version 2.3.0-beta01
20. November 2019
androidx.work:work-*:2.3.0-beta01
wurde veröffentlicht. Version 2.3.0-beta01 enthält diese Commits.
Neue Funktionen
- Es wurde eine neue Lint-Regel hinzugefügt, die Entwicklerfehler aufgrund falscher 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
wurde veröffentlicht. Version 2.3.0-alpha03 enthält diese Commits.
Neue Funktionen
- Es wurde die
WorkManager.createCancelPendingIntent()
API hinzugefügt, die das Löschen vonWorkRequest
s vereinfacht, ohne eine weitere Komponente inAndroidManifest.xml
registrieren zu müssen. Mit dieser API ist es besonders einfach,WorkRequest
s vonNotification
s abzubrechen. Wir gehen davon aus, dass sie in Version 2.3.0 mit den neuen APIs im Vordergrund gekoppelt wird. - WorkManager ist jetzt auf
androidx.room:*:2.2.0
(stabile Version) angewiesen.
API-Änderungen
ForegroundInfo.getNotificationType()
wurde inForegroundInfo.getForegroundServiceType()
umbenannt, um die Konsistenz mit den zugrunde liegenden Plattform-APIs zu verbessern. (b/142729893, aosp/1143316)
Fehlerkorrekturen
- Ein Fehler wurde behoben, der durch einen unnötigen Aufruf von
setTransactionSuccessful()
außerhalb einer Transaktion verursacht wurde. Dies kommt bei seltenen Migrationen vor. (b/142580433, aosp/1141737)
Version 2.3.0-alpha02
9. Oktober 2019
androidx.work:work-*:2.3.0-alpha02
wurde veröffentlicht. Version 2.3.0-alpha02 enthält diese Commits.
Neue Funktionen
- WorkManager unterstützt jetzt die Ausführung länger andauernder oder wichtiger Arbeiten, die vom Betriebssystem aufrechterhalten werden sollen. Weitere Informationen finden Sie unter
ListenableWorker#setForegroundAsync()
(oderCoroutineWorker#setForeground()
für Kotlin). (aosp/1133636)
API-Änderungen
- Die
containsKey
API inData
wird inhasKeyWithValueOfType
umbenannt. Die entsprechende Erweiterungsmethode in derktx
-Bibliothek wurde ebenfalls umbenannt. (b/141916545)
Fehlerkorrekturen
- WorkManager-Zeitpläne funktionieren relativ gut, wenn sich die Anzahl der
WorkRequest
s in der Warteschlange den Planungsbeschränkungen nähert. (aosp/1105766) - WorkManager ruft
ListenableWorker#onStopped()
nur dann auf, wenn die Arbeit noch nicht abgeschlossen ist. (b/140055777) - WorkManager entfernt nun Fortschrittsinformationen, wenn ein Worker unterbrochen wird oder seinen Endzustand erreicht. (aosp/1114572)
Data
hat jetzt eine viel nützlicheretoString()
Darstellung. (b/140945323)Data
hat jetzt eine bessereequals()
-Methode. Außerdem wirddeepEquals
für den TypArray
unterstützt. (b/140922528)- WorkManager speichert die interne Datenbank und die Dateien der Einstellungen jetzt in einem Verzeichnis ohne Sicherungskopie. (b/114808216)
Version 2.3.0-alpha01
22. August 2019
androidx.work:work-*:2.3.September 5, 20190-alpha01
wurde veröffentlicht. Die in dieser Version enthaltenen Commits finden Sie hier.
Neue Funktionen
ListenableWorker
können jetzt über diesetProgressAsync()
API den Fortschritt festlegen. Außerdem wurden eine entsprechendesuspend
-ingsetProgress
API inCoroutineWorker
und einesetProgress
inRxWorker
hinzugefügt, die eineSingle<Void>
zurückgibt. Mit diesen neuen APIs können Worker Fortschrittsinformationen überWorkInfo
übertragen, das über eine entsprechendegetProgress
API verfügt. (b/79481554)Data
hat einecontainsKey()
API, mit der überprüft werden kann, ob Eingabedaten fürWorker
-Objekte Schlüssel mit dem erwarteten Typ enthalten. (b/117136838)Data
kann jetzt mitData.toByteArray()
undData.fromByteArray()
serialisiert werden. Beachten Sie, dass es fürData
keine Versionsgarantien gibt. Sie sollten es also nicht beibehalten und auch nicht für IPC zwischen Anwendungen verwenden. Sie können nur zwischen mehreren Prozessen derselben Anwendung verwendet werden.- Neue Funktion, mit der über
Configuration.setInputMergerFactory
einInputMergerFactory
angegeben werden kann. (b/133273159)
API-Änderungen
- WorkManager löst eine Instanz von
IllegalStateException
aus, wennWorkerFactory
eine Instanz vonListenableWorker
zurückgibt, die zuvor aufgerufen wurde. (b/139554406) - Updates in der Dokumentation zur Stornierung von
ListenableFuture
und zumonStopped()
-Callback inListenableWorker
. (b/138413671)
Fehlerkorrekturen
- Der in Bearbeitung befindliche Planer ignoriert jetzt
WorkRequest
s mit der Einschränkungidle
. Diese Anfragen werden jetzt nur noch vonJobScheduler
aufgenommen, wenn das Gerät tatsächlichidle
ist. (aosp/1089779) TestScheduler
verwendet jetzt die angegebeneExecutor
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
wurde veröffentlicht. Die in dieser Version enthaltenen Commits finden Sie hier.
Dieser Release ist mit androidx.work:work-*:2.2.0-rc01
identisch.
Wichtige Änderungen in Version 2.2.0 von 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 für eine zuverlässigere und leistungsfähigere Hintergrundverarbeitung sorgt. Wenn Ihre App Google Play-Dienste verwendet, fügen Sie diese Abhängigkeit zu Ihrer Gradle-Datei hinzu, damit GCMNetworkManager automatisch unterstützt wird. Wenn Play-Dienste nicht verfügbar sind, greift WorkManager auf älteren Geräten weiterhin auf AlarmManager zurück.
Version 2.2.0-rc01
30. Juli 2019
androidx.work:work-*:2.2.0-rc01
wurde veröffentlicht. 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 eine
RejectedExecutionException
verursachte. (aosp/1092374) (b/138238197) - Es wurde eine Behelfslösung 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
wurde veröffentlicht. Die in dieser Version enthaltenen Commits finden Sie hier.
Fehlerkorrekturen
- Unbeabsichtigte Jacoco-Abhängigkeit, die in
2.2.0-beta01
eingeführt wurde, wurde entfernt.
Version 2.2.0-beta01
17. Juli 2019
androidx.work:work-*:2.2.0-beta01
wurde veröffentlicht. Die in dieser Version enthaltenen Commits finden Sie hier.
Neue Funktionen
androidx.work:work-gcm:2.2.0-beta01
ist ein neues Maven-Artefakt, das die Verwendung von GCMNetworkManager als 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 für eine zuverlässigere und leistungsfähigere Hintergrundverarbeitung sorgt. Wenn Ihre App Google Play-Dienste verwendet, fügen Sie diese Abhängigkeit zu Ihrer Gradle-Datei hinzu, damit GCMNetworkManager automatisch unterstützt wird. Wenn Play-Dienste nicht verfügbar sind, greift WorkManager auf älteren Geräten weiterhin auf AlarmManager zurück.
Fehlerkorrekturen
- Fehlerkorrektur für
IllegalArgumentException
beim Verfolgen 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
wurde veröffentlicht. Dieser Release ist mit androidx.work:work-*:2.1.0-rc01
identisch.
Wichtige Änderungen seit Version 2.0.1
work-runtime-ktx
erfordert jetzt Java 8. Sollten Probleme auftreten, können Sie Folgendes zu Ihrembuild.gradle
hinzufügen:kotlinOptions { jvmTarget = "1.8" }
- On-Demand-Initialisierung für WorkManager hinzugefügt, die WorkManager erstellt
wenn darauf verwiesen wird. b/127497100 So richten Sie Ihr Projekt für die On-Demand-Initialisierung ein:
- Deaktivieren Sie die automatische Initialisierung.
- Implementieren Sie
Configuration.Provider
in Ihrem benutzerdefiniertenApplication
-Objekt. - Alle Verweise von
WorkManager.getInstance()
ändern zuWorkManager.getInstance(Context)
. Im Rahmen dieser ÄnderungWorkManager.getInstance()
wurde verworfen. Es ist immer sicherer, das neue Ersatz fürWorkManager.getInstance(Context)
, auch wenn du gerade keine On-Demand-Initialisierung.
- Für
PeriodicWorkRequest
werden jetzt anfängliche Verzögerungen unterstützt. Sie können die MethodesetInitialDelay
fürPeriodicWorkRequest.Builder
, um einen Anfangspunkt festzulegen Verzögerung. b/111404867 - Es besteht jetzt die Möglichkeit, mit dem Befehl an einen oder mehrere registrierte
WorkerFactory
s zu delegierenDelegatingWorkerFactory
. b/131435993 - Es besteht jetzt die Möglichkeit, den
Executor
anzupassen, der von WorkManager verwendet wird für die gesamte interne Buchhaltung überConfiguration.Builder.setTaskExecutor
. - Funktion zum Erstellen von testbaren Einheiten
Worker
undListenableWorker
hinzugefügt Klassen mithilfe vonTestWorkerBuilder
undTestListenableWorkerBuilder
in der Artefaktwork-testing
.work-testing
ruft Kotlin jetzt als Abhängigkeit ab. enthält standardmäßig mehrere Kotlin-Erweiterungen.
- Anzahl der Ausführungsversuche zu
WorkInfo
hinzugefügt. b/127290461 Data
-Typen können jetzt Byte und Byte-Arrays speichern und abrufen. Das bedeutet NICHT Maximale Größe vonData
-Objekten ändern.- WorkManager ist jetzt auf
Room 2.1.0
angewiesen, wodurch einige Datenbankprobleme behoben werden sollten.
Version 2.1.0-rc01
27. Juni 2019
androidx.work:work-*:2.1.0-rc01
wurde veröffentlicht. Die in dieser Version enthaltenen Commits finden Sie hier.
Fehlerkorrekturen
- Es wurde ein Fehler behoben, bei dem eine Anwendung abstürzte, wenn Jobs mit
JobScheduler
während einer Sicherung ausgeführt wurden, b/135858602.
Version 2.1.0-beta02
20. Juni 2019
androidx.work:work-*:2.1.0-beta02
wurde veröffentlicht. Die in dieser Version enthaltenen Commits finden Sie hier.
Fehlerkorrekturen
TestListenableWorkerBuilder
verwendet jetzt beim Erstellen von Instanzen vonListenableWorker
die richtigeWorkerFactory
. b/135275844- Es wurde ein Fehler behoben, der zu Verschiebungen in den Ausführungsfenstern für
WorkRequest
Sekunden aufgrund von Prozessfehlern führte. b/135272196
Version 2.1.0-beta01
13. Juni 2019
androidx.work:work-*:2.1.0-beta01
wurde veröffentlicht. Die in dieser Version enthaltenen Commits finden Sie hier.
Fehlerkorrekturen
- WorkManager ist jetzt auf
Room 2.1.0
angewiesen, wodurch einige Datenbankprobleme behoben werden sollten. - Einige E/A-Vorgänge auf dem Startlaufwerk im Hauptthread wurden entfernt.
- Ein potenzielles Deadlock beim Einschränkungs-Tracking wurde behoben. b/134361006
- Vorbeugend abgebrochene ungültige Jobs, die WorkManager zugeordnet sind. b/134058261
- 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
wurde veröffentlicht.
Fehlerkorrekturen
- Die Dokumentation für
PeriodicWorkRequest
wurde verbessert. WorkManagerTestInitHelper
verwendet jetzt den richtigen 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 in der Implementierung von
JobScheduler
bei der Planung von Jobs mit WorkManager können umgangen werden. - Verbesserungen im AlarmManager-basierten Planer bezüglich 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
Für
PeriodicWorkRequest
werden jetzt anfängliche Verzögerungen unterstützt. Sie können die MethodesetInitialDelay
fürPeriodicWorkRequest.Builder
, um einen Anfangspunkt festzulegen Verzögerung. b/111404867Es besteht jetzt die Möglichkeit, mit dem Befehl an einen oder mehrere registrierte
WorkerFactory
s zu delegierenDelegatingWorkerFactory
. b/131435993Es besteht jetzt die Möglichkeit, den
Executor
anzupassen, der von WorkManager verwendet wird für die gesamte interne Buchhaltung überConfiguration.Builder.setTaskExecutor
.Verbesserte Dokumentation rund um
WorkRequest.keepResultsForAtLeast
(b/130638001), On-Demand-Initialisierung undPeriodicWorkRequest.Builder
(b/131711394).
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 gibt, wird nicht auf die 1.x-Version zurückportiert. Wir empfehlen den Wechsel zu 2.x.
API-Änderungen
- On-Demand-Initialisierung für WorkManager hinzugefügt, die WorkManager erstellt
wenn darauf verwiesen wird. b/127497100 So richten Sie Ihr Projekt für die On-Demand-Initialisierung ein:
- Deaktivieren Sie die automatische Initialisierung.
- Implementieren Sie
Configuration.Provider
in Ihrem benutzerdefiniertenApplication
-Objekt. - Alle Verweise von
WorkManager.getInstance()
ändern zuWorkManager.getInstance(Context)
. Im Rahmen dieser ÄnderungWorkManager.getInstance()
wurde verworfen. Es ist immer sicherer, das neue Ersatz fürWorkManager.getInstance(Context)
, auch wenn du gerade keine On-Demand-Initialisierung.
- Funktion zum Erstellen von testbaren Einheiten
Worker
undListenableWorker
hinzugefügt Klassen mithilfe vonTestWorkerBuilder
undTestListenableWorkerBuilder
in der Artefaktwork-testing
.work-testing
ruft Kotlin jetzt als Abhängigkeit ab, aber auch enthält standardmäßig mehrere Kotlin-Erweiterungen.
- Anzahl der Ausführungsversuche zu
WorkInfo
hinzugefügt. b/127290461 Data
-Typen können jetzt Byte und Byte-Arrays speichern und abrufen. Das bedeutet NICHT Maximale Größe vonData
-Objekten ändern.CoroutineWorker.coroutineContext
wurde verworfen. Dieses Feld wurde falsch eingegeben alsCoroutineDispatcher
; nicht mehr benötigen, da Sie den gewünschten coroutineContext selbst im Text der Anhaltenden Funktion.RxWorker.createWork()
undRxWorker.getBackgroundScheduler()
sind jetzt die mit@NonNull
-Rückgabetypen annotiert sind.
Version 2.0.1
Version 2.0.1
9. April 2019
WorkManager 2.0.1 wird veröffentlicht. Diese Version ist identisch mit 2.0.1-rc01
Version 2.0.1-rc01
3. April 2019
WorkManager 2.0.1-rc01 wird veröffentlicht. Diese Version enthält einige Fehlerkorrekturen. Für alten Version 1.x verwenden, sind einige dieser Änderungen auch in 1.0.1-rc01
Fehlerkorrekturen
- Robolectric-Tests funktionieren jetzt ordnungsgemäß mit WorkManager. b/122553577
- Ein Grenzfallabsturz wurde behoben, bei dem das Tracking von Einschränkungen für pre-JobScheduler APIs. b/129226383
- Ein
StackOverflowError
für lange Arbeitsketten wurde behoben. b/129091233 - Die Dokumentation für
PeriodicWorkRequest
s wurde aktualisiert, um anzugeben, dass die Flex-Time wird von API 23 nicht unterstützt. - Einige fehlerhafte Links in der Kotlin-Dokumentation wurden behoben.
Version 2.0.0
Version 2.0.0
20. März 2019
WorkManager 2.0.0 wurde veröffentlicht. Diese Version ist mit 2.0.0-rc01 identisch und ist die AndroidX-Version von 1.0.0 mit AndroidX-Abhängigkeiten stabil ist. Wir empfehlen, auf diese Version statt auf die alten 1.x-Versionen ausgerichtet ist. Alle aktiven Die Entwicklung ist auf 2.x ausgerichtet und 1.x erhält nur kritische Fehlerkorrekturen für eine nur für kurze Zeit.
Version 2.0.0-rc01
7. März 2019
WorkManager 2.0.0-rc01 wird veröffentlicht. Diese Version ist mit der stabilen Version 1.0.0 identisch. hat aber AndroidX-Abhängigkeiten. Sobald dies die stabile Version 2.0.0 erreicht, sollten Sie diese Version einschließen und die alten 1.x-Versionen erhalten nur einige wichtige Fehlerkorrekturen. Die gesamte aktive Entwicklung wird auf 2.x ausgerichtet.
Abhängigkeiten vor AndroidX
Referenzdokumente: Java
Cool
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 wird veröffentlicht. Diese Version ist identisch mit 1.0.1-rc01
Wir empfehlen Nutzern dringend, auf WorkManager 2.x zu aktualisieren, da wird es in Zukunft nur noch sehr wenige Aktualisierungen für den 1.x-Zweig geben. Neue APIs werden auch nicht für die 1.x-Bibliothek veröffentlicht.
Version 1.0.1-rc01
2. April 2019
WorkManager 1.0.1-rc01 wird veröffentlicht. Diese Version enthält einige Fehlerkorrekturen.
Fehlerkorrekturen
- Robolectric-Tests funktionieren jetzt ordnungsgemäß mit WorkManager. b/122553577
- Ein Grenzfallabsturz wurde behoben, bei dem das Tracking von Einschränkungen für pre-JobScheduler APIs. b/129226383
- Ein
StackOverflowError
für lange 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 ist identisch mit 1.0.0-rc02.
Version 1.0.0-rc02
21. Februar 2019
Dies ist der zweite Releasekandidat für die stabile Version 1.0.0 von WorkManager. Diese Version enthält zwei Fehlerbehebungen.
Fehlerkorrekturen
Worker
s werden jetzt nach einem Anwendungsabsturz korrekt geplant. b/124546316Worker
-Objekte, die ein ungeprüftesException
auslösen, sind jetzt korrekt alsFAILED
und stürzt den App-Prozess nicht mehr ab.
Version 1.0.0-rc01
14. Februar 2019
Dies ist ein Kandidat für die stabile Version 1.0.0 von WorkManager. Diese Version enthält eine Fehlerkorrektur.
Fehlerkorrekturen
- Die AlarmManager-basierte Implementierung berücksichtigt jetzt
flex
-Fenster korrekt für PeriodicWorkRequests. b/124274584
Version 1.0.0-beta05
6. Februar 2019
Diese Version enthält einige Fehlerkorrekturen.
Fehlerkorrekturen
- Ein Fall wurde behoben, bei dem
JobScheduler.getPendingJob(...)
in API 23 verwendet wurde. b/123893059 - Fehler behoben:
NullPointerException
auf Geräten mit Android 5.1 (API-Level 22) oder niedriger. b/123835104
Version 1.0.0-beta04
4. Februar 2019
Diese Version enthält einige Fehlerkorrekturen.
Fehlerkorrekturen
- Verbesserte Planung von PeriodicWork für die AlarmManager-basierte Implementierung.
- Ein Problem wurde behoben, bei dem WorkManager Einschränkungen nicht richtig verfolgte, wenn mithilfe der AlarmManager-basierten Implementierung. b/123379508
- Es wurde ein Fehler behoben, bei dem WorkManager die Arbeit nach dem Beenden eines Prozesses nicht wiederholen konnte, wenn mithilfe der AlarmManager-basierten Implementierung. b/123329850
- Es wurde ein Fall behoben, bei dem WorkManager bei Verwendung der Auf AlarmManager basierende Implementierung.
Version 1.0.0-beta03
25. Januar 2019
Diese Version enthält einige Fehlerkorrekturen.
Fehlerkorrekturen
- Es wurde eine Regressions-
1.0.0-beta02
eingeführt, die dazu führte, dass die Arbeit nicht ausgeführt wurde in bestimmten Situationen richtig funktioniert. b/123211993 - Ein Fall wurde behoben, bei dem das Backoff-Timing bei der Arbeit nicht richtig berücksichtigt wurde. b/122881597
- Fehler behoben:
ConcurrentModificationException
auf Geräten mit Android 5.1 (API) oder) oder darunter liegen. Dies ist eine Fortsetzung der Korrektur in1.0.0-beta02
. b/121345393 exported=false
für einige Komponenten in unserem Manifest hinzugefügt, die fehlten für diese Anmerkung.- Informationen darüber, wie WorkManager mit dem Betriebssystem interagiert, finden Sie im auf Paketebene.
Version 1.0.0-beta02
15. Januar 2019
Diese Version enthält einige Fehlerkorrekturen.
Fehlerkorrekturen
- Es wurde ein Grenzfall behoben, bei dem regelmäßige Arbeiten mehrmals pro Intervall ausgeführt werden konnten. auf Geräten mit Android 6.0 (API-Level 23). b/121998363
- Fehler behoben:
ConcurrentModificationException
auf Geräten mit Android 5.1 (API) Ebene 22) oder niedriger. b/121345393 - Die fehlerhafte Ausführung von Arbeiten, wenn die Einschränkungen auf Geräten nicht erfüllt wurden, wurde behoben. mit Android 5.1 (API-Level 22) oder niedriger. b/122578012
- Die Bearbeitung von Aufgaben wurde optimiert, um in einigen Grenzfällen schneller zu arbeiten. b/122358129
- Es wurde eine Änderung hinzugefügt, um potenzielle Race-Bedingungen zwischen mehreren Instanzen zu beheben.
von
LiveData
, die WorkManager verwendet. - Verschoben, um die
Room
-Abhängigkeit1.1.1
anstelle von1.1.1-rc01
zu verwenden. diese Versionen identisch sind. b/122578011
Version 1.0.0-beta01
19. Dezember 2018
Diese Version enthält keine API-Änderungen. Künftig bleibt WorkManager API bis zur nächsten Version stabil, sofern kein kritisches Problem auftritt. Diese Version enthält einige Fehlerkorrekturen.
Fehlerkorrekturen
- Zuvor stornierte untergeordnete Elemente von erfolgreich abgeschlossenen übergeordneten Aufgaben werden nicht mehr ausgeführt. b/120811767
- Korrekt initialisierte Logging-Klassen, die hauptsächlich während Tests angezeigt werden
Version 1.0.0-alpha13
12. Dezember 2018
Diese Version enthält eine kleinere API-Änderung, die für einige Nutzer von Kotlin hilfreich ist.
API-Änderungen
androidx.work.Result
wurde zu einer inneren Klasse vonListenableWorker
verschoben. Dadurch werden Refaktorierungskonflikte mit der übergeordnetenResult
-Klasse von Kotlin vermieden. Dies ist eine funktionsgefährdende API-Änderung. b/120564418
Nicht abwärtskompatible API-Änderungen
androidx.work.Result
wurde zu einer inneren Klasse vonListenableWorker
verschoben.
Version 1.0.0-alpha12
5. Dezember 2018
Diese Version enthält einige wichtige API-Änderungen. Weitere Informationen finden Sie unten im Abschnitt funktionsgefährdende API-Änderungen. Diese Version wird wahrscheinlich als erste Betaversion veröffentlicht. alpha12
enthält auch umfangreiche Aktualisierungen der Dokumentation.
API-Änderungen
- Mit dem neuen Artefakt
work-rxjava2
wirdRxWorker
eingeführt. Dies ist einListenableWorker
, das eineSingle<Payload>
erwartet. - Firebase JobDispatcher wird nicht mehr unterstützt, da es demnächst eingestellt wird. Das bedeutet, dass das Artefakt „
work-firebase
“ im Laufe der Betaphase nicht mehr aktualisiert wird. Wir arbeiten daran, in Zukunft eine Alternative hinzuzufügen. Payload
inResult
kombiniert.Result
ist jetzt eine „siegelte Klasse“ mit drei konkreten Implementierungen, die Sie überResult.success()
(oderResult.success(Data)
),Result.failure()
(oderResult.failure(Data)
) undResult.retry()
erhalten können. IhreListenableFuture
-Ergebnisse ergeben jetztResult
stattPayload
.Worker
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 das langsame Auslösen von 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
ContentUriTriggers
-Klasse und die Methoden, die darauf verweisen, sind nicht mehr öffentlich verfügbar. Das ist eine funktionsgefährdende Änderung. - Die restlichen varargs-Methoden in
WorkManager
,WorkContinuation
undOneTimeWorkRequest
wurden entfernt, um die API zu optimieren. Um Build-Probleme zu beheben, können Sie Ihre vorhandenen varargs mitArrays.asList(...)
zusammenfassen. Wir fügen immer noch Versionen jeder Methode mit einem Argument hinzu. Das ist eine funktionsgefährdende Änderung. WorkContinuation.combine(OneTimeWorkRequest, *)
Varianten wurden entfernt. Es wurde 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 bei der Wiederherstellung nach dem Beenden eines Prozesses einer bereits laufenden Aufgabe.
LiveData
, das überobserveForever
beobachtet wird, wird über WorkManager erfasst. Dies ist ein Backport-Problem einer Korrektur der Raumbibliothek. b/74477406Data.Builder.build()
löst jetzt eine Ausnahme aus, wenn das serialisierte Objekt seine maximale Größe überschreitet. Dies ist bisher nur in einem Hintergrundthread der Fall, wenn Sie ihn nicht richtig verarbeiten konnten.- Weitere Unterscheidung zwischen angehaltenen und stornierten Arbeiten
getWorkInfoById()
gibt während desListenableWorker.onStopped()
eineWorkInfo
mit derCANCELLED
State
zurück. null
Result
s als Fehler inListenableWorker
behandeln. b/120362353- Spekulative Fehlerbehebung für Shield Tablets mit API 24, die manchmal eine
IllegalArgumentException
auslöste. b/119484416
Nicht abwärtskompatible API-Änderungen
- Firebase JobDispatcher wird nicht mehr unterstützt, da es demnächst eingestellt wird. Das bedeutet, dass das Artefakt „
work-firebase
“ im Laufe der Betaphase nicht mehr aktualisiert wird. Wir arbeiten daran, in Zukunft eine Alternative hinzuzufügen. Payload
inResult
kombiniert.Result
ist jetzt eine „siegelte Klasse“ mit drei konkreten Implementierungen, die Sie überResult.success()
(oderResult.success(Data)
),Result.failure()
(oderResult.failure(Data)
) undResult.retry()
erhalten können. IhreListenableFuture
-Ergebnisse ergeben jetztResult
stattPayload
.Worker
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
ContentUriTriggers
-Klasse und die Methoden, die darauf verweisen, sind nicht mehr öffentlich verfügbar. - Die restlichen varargs-Methoden in
WorkManager
,WorkContinuation
undOneTimeWorkRequest
wurden entfernt, um die API zu optimieren. Um Build-Probleme zu beheben, können Sie Ihre vorhandenen varargs mitArrays.asList(...)
zusammenfassen. Wir fügen immer noch Versionen jeder Methode mit einem Argument hinzu. WorkContinuation.combine(OneTimeWorkRequest, *)
Varianten wurden entfernt. Es wurde 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 zur stabilen API unter beta
werden.
In dieser Version gibt es wichtige API-Änderungen: Weitere Informationen finden Sie unten im Abschnitt funktionsgefährdende API-Änderungen.
API-Änderungen
- Mit
work-runtime-ktx
wird eine neueCoroutineWorker
eingeführt. WorkStatus
wurde inWorkInfo
umbenannt. Alle entsprechendengetStatus
-Methodenvarianten wurden in die entsprechendegetWorkInfo
Varianten. Das ist eine funktionsgefährdende Änderung.ListenableWorker.onStopped()
akzeptiert kein boolesches Argument mehr, das angibt, obWorkRequest
abgebrochen wurde.WorkManager
macht diese Unterscheidung nicht mehr möglich. Das ist eine funktionsgefährdende Änderung.androidx.work.test
-Paket wurde inandroidx.work.testing
-Paket 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 Sammlungen 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
gehört nicht mehr zur öffentlichen API. Das ist eine funktionsgefährdende Änderung. Configuration.getMaxJobSchedulerID()
undConfiguration.getMinJobSchedulerID()
wurden inConfiguration.getMinJobSchedulerId()
umbenannt bzw.Configuration.getMaxJobSchedulerId()
. Das ist eine funktionsgefährdende Änderung.- Der öffentlichen API wurden viele
@NonNull
-Annotationen hinzugefügt, um die Ergonomie der API zu verbessern. - Fügen Sie die
WorkManager.enqueueUniqueWork()
API hinzu, um eindeutigeOneTimeWorkRequest
s in die Warteschlange zu stellen, ohne eineWorkContinuation
erstellen zu müssen. - Alle Varianten der Methoden
enqueue
undcancel
fürWorkManager
geben jetzt einen 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 mehr als einmal versuchen,
WorkManager
pro Prozess zuinitialize
, führt dies jetzt zu einemIllegalStateException
. Das ist eine funktionsgefährdende Änderung.
Fehlerkorrekturen
WorkRequest.Builder
s im Artefaktwork-runtime-ktx
verwenden jetztListenableWorker
s. Damit wird b/117666259 behoben.- Die nächste Ausführungszeit für
PeriodicWork
muss in der Zukunft liegen. Damit wird b/118204399 behoben. - Entfernen Sie potenzielle Laufwerks-E/A-Vorgänge, wenn beim Start der App WorkManager verwendet wird. Damit wird b/117796731 behoben.
- Eine Race-Bedingung in
WorkConstraintsTracker
wurde korrigiert. Damit wird android-workmanager/issues/56 behoben.
Nicht abwärtskompatible API-Änderungen
WorkStatus
wurde inWorkInfo
umbenannt. Alle entsprechendengetStatus
-Methodenvarianten wurden in die entsprechendegetWorkInfo
Varianten.ListenableWorker.onStopped()
akzeptiert kein boolesches Argument mehr, das angibt, obWorkRequest
abgebrochen wurde.WorkManager
macht diese Unterscheidung nicht mehr möglich.androidx.work.test
-Paket wurde inandroidx.work.testing
-Paket 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 Sammlungen zurück.ListenableWorker.onStartWork()
wurde inListenableWorker.startWork()
umbenannt.- Der Konstruktor für
WorkStatus
gehört nicht mehr zur öffentlichen API. Configuration.getMaxJobSchedulerID()
undConfiguration.getMinJobSchedulerID()
wurden inConfiguration.getMinJobSchedulerId()
umbenannt bzw.Configuration.getMaxJobSchedulerId()
.- 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 mehr als einmal versuchen,
WorkManager
pro Prozess zuinitialize
, führt dies jetzt zu einemIllegalStateException
.
Version 1.0.0-alpha10
11. Oktober 2018
Diese Version unterstützt von Entwicklern gesteuerte asynchrone Vorgänge. In dieser Version gibt es wichtige API-Änderungen: Weitere Informationen finden Sie unten im Abschnitt funktionsgefährdende API-Änderungen.
Wir gehen davon aus, dass sich WorkManager in der letzten Phase der Alphaphase befindet. Wir erwarten, dass die API in der Betaversion stabil sein wird. Bitte nehmen Sie sich die Zeit, um uns Feedback über unseren Issue Tracker zu senden.
API-Änderungen
- Alle vorherigen
deprecated
-Methoden und -Klassen wurden entfernt, insbesondere derWorker
-Standardkonstruktor. Dies ist eine funktionsgefährdende API-Änderung. NonBlockingWorker
wurde inListenableWorker
umbenannt. Diese Klasse ist jetzt eine eingeblendete öffentliche Klasse und kann verwendet werden.ListenableWorker
bietet Zugriff auf eine abstrakte Methode:ListenableFuture<Payload> onStartWork()
, die im Hauptthread aufgerufen wird. Es liegt an Ihnen, die Arbeit asynchron zu starten und zu verarbeiten. Wenn Sie fertig sind, sollten SieListenableFuture
entsprechend aktualisieren. Referenzimplementierungen vonListenableFuture
sind im PaketFutures
inalpha02
enthalten (siehe AbschnittWorkManager
).Worker
erweitertListenableWorker
und funktioniert weiterhin wie zuvor mit einer abstraktenResult doWork()
-Methode.- Einige Methoden und Mitglieder wurden von
Worker
zuListenableWorker
zufällig angeordnet. - Wir werden bald Referenzimplementierungen für
ListenableWorker
s bereitstellen, die Kotlin-Koroutinen verwenden (sobald die stabilen Versionen veröffentlicht werden) und RxJava2.
- Die Schnittstelle
WorkerFactory
und die konkrete ImplementierungDefaultWorkerFactory
wurden zu einer abstrakten Klasse namensWorkerFactory
zusammengeführt. Durch die Implementierung wird das auf der Reflexion basierende Standardverhalten für alle vom Nutzer erstelltenWorkerFactory
-Instanzen als letzte Aktion aufgerufen. Das ist eine funktionsgefährdende Änderung. WorkManager.synchronous()
undWorkContinuation.synchronous()
sowie alle zugehörigen Methoden wurden entfernt.ListenableFuture<Void>
wurde als Rückgabetyp vieler Methoden in der API hinzugefügt. Dies ist eine funktionsgefährdende API-Änderung.- Sie können jetzt mithilfe von
ListenableFuture
s synchron abrufen und beobachten. Beispiel:WorkManager.enqueue()
wurde verwendet, umvoid
zurückzugeben. wird jetztListenableFuture<Void>
zurückgegeben. Sie könnenListenableFuture.addListener(Runnable, Executor)
oderListenableFuture.get()
aufrufen, um Code auszuführen, sobald der Vorgang abgeschlossen ist. - Diese
ListenableFuture
s sagen nichts darüber aus, ob der Vorgang erfolgreich war oder fehlgeschlagen ist. dass sie auch fertig waren. Sie müssen trotzdem WorkManager-Methoden verketten, um diese Informationen zu erhalten. cancel()
-Aufrufe für diese Objekte werden ignoriert, da sie verwirrend und schwer zu verstehen sind. Brechen Sie den Vorgang oder die daraus resultierende Arbeit ab? Dies ist im Vertrag vonFuture
enthalten.- Um die Einheitlichkeit mit den synchronen
getStatus*
-Methoden zu wahren, haben wirListenableFuture
-Varianten bereitgestellt und die vorhandenen, dieLiveData
zurückgegeben haben, so umbenannt, dass sie explizit „LiveData“ enthalten. als Teil des Namens enthalten (z. B.getStatusesByIdLiveData(UUID)
). Dies ist eine funktionsgefährdende API-Änderung.
- Sie können jetzt mithilfe von
Fehlerkorrekturen
- Das bekannte Problem von alpha09 bezüglich doppelter
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 wurden hinzugefügt, um den neuen
Worker
-Konstruktor beizubehalten. b/116296569 - Potenzielle
NullPointerException
in einer Race-Bedingung beheben, bei der die ArbeitREPLACE
d war. b/116253486 und b/116677275 WorkContinuation.combine()
akzeptiert jetzt eine oder mehrereWorkContinuation
statt zwei oder mehr. b/117266752
Nicht abwärtskompatible API-Änderungen
- Alle vorherigen
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()
gibtLiveData
s zurück.
Version 1.0.0-alpha09
19. September 2018
Bekanntes Problem
Wenn das Problem „Mehr als eine Datei mit betriebssystemunabhängigem Pfad ‚META-INF/proguard/androidx-annotations.pro‘ gefunden wurde“ auftritt, fügen Sie als vorübergehende Problemumgehung Folgendes in Ihre Gradle-Datei ein, während wir das Problem in Alpha 10 beheben:
Cool
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 „100 Jobs“ erforderlich war, wurde hinzugefügt. Fehler. b/115560696
- Es wurden einige Fehler bei Fremdschlüsseleinschränkungen aufgrund von Race-Bedingungen behoben. b/114705286
- Delegierte
ConstraintTrackingWorker.onStopped(boolean)
-Aufrufe an die zugrunde liegendeWorker
. b/114125093 - Erzwingen Sie die korrekte minimale Backoff-Verzögerung für Firebase JobDispatcher. b/113304626
- Verbesserte Threading-Garantien innerhalb der Bibliothek.
- Korrigieren Sie das potenzielle Problem bei der internen Deduplizierung von
LiveData
.
API-Änderungen
- Sie können jetzt zur Laufzeit eigene
Worker
-Instanzen erstellen. Geben Sie dazu eineWorkerFactory
als Teil derWorkManager.Configuration
an. Die Fallback-Factory istDefaultWorkerFactory
, was dem Verhalten vorheriger WorkManager-Versionen entspricht.- Die Standardkonstruktoren für
Worker
undNonBlockingWorker
sind jetzt als veraltet markiert. Verwende den neuen Konstruktor (Worker(Context, WorkerParameters)
) und rufesuper(Context, WorkerParameters)
auf. Bei zukünftigen WorkManager-Versionen wird der Standardkonstruktor entfernt.
- Die Standardkonstruktoren für
- Wir haben damit begonnen, das neue
ListenableFuture
-Artefakt intern zu verwenden (ohne Guava-Abhängigkeiten). In zukünftigen Releases werden wir ListenableFutures in die API einführen. Durch diese Änderung kannNonBlockingWorker
später wieder eingeblendet werden. - Funktion zum Auslösen von Aufgaben mit zeitlicher Festlegung in
TestDriver
überTestDriver.setInitialDelayMet(UUID)
undTestDriver.setPeriodDelayMet(UUID)
hinzufügen. b/113360060
Nicht abwärtskompatible Änderungen
- Die Standardkonstruktoren
Worker
undNonBlockingWorker
wurden eingestellt. Migrieren Sie so bald wie möglich zum neuen Konstruktor. Zukünftige Versionen entfernen den Standardkonstruktor.
Version 1.0.0-alpha08
27. August 2018
Fehlerkorrekturen
- WorkManager-Komponenten wurden ausdrücklich als nicht erkannter direkter Start gekennzeichnet, sodass sie beim direkten Start nicht ausgelöst werden. In Zukunft werden wir eine WorkManager-Version bereitstellen, die direkt bootfähig ist. b/112665532
- Es wurde ein Problem behoben, durch das wiederholte Aufgaben nicht ausgeführt wurden. b/112604021
- Regelmäßige Aufgaben, die nicht wiederholt ausgeführt wurden (im Zusammenhang mit dem oben genannten Problem), wurde behoben. b/112859683
- Die Backoff-Richtlinien wurden eingehalten, wenn der App-Prozess bereits ausgeführt wird.
- Ausnahmemeldungen in
Data
wurden korrigiert, um anzugeben, dass das Limit 10 KB beträgt. - Der Maximalwert von
Configuration.setMaxSchedulerLimit(int)
wurde auf 50 gesenkt, um eine gewisse Latenz bei der Verarbeitung vonJobScheduler
zu berücksichtigen. b/112817355
Version 1.0.0-alpha07
16. August 2018
Fehlerkorrekturen
- Eine potenzielle SQL-Abfrage mit negativen Grenzwerten, die eine unbegrenzte Anzahl von Ergebnissen zurückgeben konnte, wurde korrigiert.
- Arbeit, die bereits ausgeführt wurde, bricht nun korrekt alle ausstehenden Kopien dieser Arbeit in anderen Planern ab. Dadurch wurde das Limit von
JobScheduler
Jobs überschritten. b/111569265 ConcurrentModificationException
inConstraintTracker
korrigiert. b/112272753- Die Rückgabetyp-Annotationen von
Data.getBooleanArray(String)
undData.getIntArray(String)
wurden in@Nullable
statt in@NonNull
geändert. b/112275229
API-Änderungen
Worker
erweitert jetzt die neue KlasseNonBlockingWorker
. Dies hat keine Auswirkungen auf die aktuelle Nutzung. In Zukunft wirdNonBlockingWorker
zu einer vollständig unterstützten Entität für Lösungen für benutzerdefinierte Threading.- Die Rückgabetyp-Annotationen von
Data.getBooleanArray(String)
undData.getIntArray(String)
wurden in@Nullable
statt in@NonNull
geändert. b/112275229 - Kotlin-Erweiterungen: Wir haben
Map.toWorkData()
eingestellt und eineworkDataOf(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
- Verhindern Sie bei der Planung von Arbeiten eine Datenbanksperre. b/111801342
- Es wurde ein Fehler behoben, der dazu führte, dass
PeriodicWork
im Stromsparmodus nicht planmäßig ausgeführt wird. b/111469837 - Eine Race-Bedingung beim Verfolgen von Einschränkungen, die
WorkManager
zum Absturz führen, 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, 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
statt mit@Nullable
gekennzeichnet. Wenn das Singleton-Element bei manueller Initialisierung nicht richtig initialisiert wird, löst die Methode stattdessen einenIllegalStateException
aus. Dies ist ein funktionsgefährdende API-Änderung.- Die neue API
Configuration.Builder.setMinimumLoggingLevel(int)
wurde 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 so geändert, dass kein Standardwert mehr verwendet wird (implizit ist diesnull
). Dies ist eine funktionsgefährdende API-Änderung. - Einige Methoden, die nur für die interne Nutzung erforderlich sind, wurden als
@hide
gekennzeichnet. Dazu gehören derConstraints
-Konstruktor,Data.toByteArray()
undData.fromByteArray(byte[])
. Dies ist eine funktionsgefährdende API-Änderung.
Fehlerkorrekturen
- WorkManager führt bei bekannten Fällen der automatischen Sicherung keine Arbeit mehr aus. Dies könnte zu einem Absturz geführt haben. b/110564377
- Doppelte Planung von
PeriodicWorkRequest
s bei Verwendung vonJobScheduler
wurde behoben. b/110798652 - Es wurde ein Problem behoben, bei dem
PeriodicWorkRequest
s nach dem Stromsparmodus des Geräts nicht korrekt ausgeführt wurden. b/111469837 - Es wurde ein Problem mit anfänglichen Verzögerungen bei der Verwendung von Firebase JobDispatcher behoben. b/111141023
- Einige potenzielle Race-Bedingungen und Timing-Probleme wurden behoben.
BroadcastReceiver
s, die nicht mehr benötigt wurden, wurden korrekt freigegeben.- Die Leistung bei der Neuplanung wurde optimiert, wenn Apps nach dem erzwungenen Schließen neu gestartet werden.
TestScheduler.setAllConstraintsMet(UUID)
darf vor oder nach Einreihung der angegebenenWorkRequest
in die Warteschlange aufgerufen werden. b/111238024
Nicht abwärtskompatible Änderungen
WorkManager.getInstance()
ist jetzt mit@NonNull
statt mit@Nullable
gekennzeichnet.- Die Signatur von
Data.getString()
wurde so geändert, dass kein Standardwert mehr verwendet wird (implizit ist diesnull
). - Einige Methoden, die nur für die interne Nutzung erforderlich sind, wurden als
@hide
gekennzeichnet. Dazu gehören derConstraints
-Konstruktor,Data.toByteArray()
undData.fromByteArray(byte[])
.
Version 1.0.0-alpha04
26. Juni 2018
Fehlerkorrekturen
PeriodicWorkRequest
s werden jetzt korrekt neu geplant, wenn dieAlarmManager
-basierte Implementierung verwendet wird.- Ein möglicher ANR-Fehler beim Verschieben aller Worker nach einem erzwungenen Beenden oder einem Neustart wurde behoben. b/110507716
- Verschiedene WorkManager-APIs wurden um Anmerkungen zur Null-Zulässigkeit hinzugefügt. b/110344065
- Nicht abgefangene Ausnahmen protokollieren, die während der Worker-Ausführung auftreten. b/109900862
- destruktive Datenbankmigrationen sind zulässig, falls Sie ein Rollback auf eine ältere Version von WorkManager durchführen. b/74633270
- Ein Migrationsabsturz beim Erstellen doppelter impliziter Tags wurde behoben. Dies ist ein sehr seltenes Problem, das nur aufgetreten ist, wenn Sie selbst dasselbe implizite Tag-Format verwendet haben.
Version 1.0.0-alpha03
19. Juni 2018
Fehlerkorrekturen
Eine Race-Bedingung in der
AlarmManager
-basierten Implementierung wurde behoben. b/80346526.Doppelte Jobs bei Verwendung von
JobScheduler
nach einem Geräteneustart wurden behoben.Jobs mit Inhalts-URI-Triggern bleiben jetzt auch nach einem Neustart bestehen. b/80234744
Aktualisierungen der Dokumentation b/109827628, b/109758949, b/80230748
Ein Absturz beim erneuten Einreihen einer
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
Room
-Version1.1.1-rc1
.
API-Änderungen
getStatusesSync()
, die synchrone Version vonWorkContinuation.getStatuses()
, wurde hinzugefügt.Worker
kann zwischen einer vom Nutzer initiierten Kündigung und einer vorübergehenden vom Betriebssystem angeforderten Beendigung unterscheiden.Worker.isStopped()
gibttrue
zurück, wenn eine Art von Stopp angefordert wurde.Worker.isCancelled()
gibttrue
zurück, wenn die Arbeit explizit abgebrochen wurde. b/79632247- Unterstützung für JobParameters#getNetwork() auf API 28 hinzugefügt. Dies wird über
Worker.getNetwork()
bereitgestellt. Configuration.Builder.setMaxSchedulerLimit(int maxSchedulerLimit)
wurde hinzugefügt, damit Sie erzwingen können, wie viele Jobs anJobScheduler
oderAlarmManager
gesendet werden können. So wird verhindert, dassWorkManager
alle verfügbarenJobScheduler
-Slots belegt.Configuration.setJobSchedulerJobIdRange(int minJobSchedulerId, int maxJobSchedulerId)
wurde hinzugefügt, mit dem ein Bereich vonJobScheduler
-Job-IDs definiert werden kann, die fürWorkManager
sicher sind. b/79996760Worker.getRunAttemptCount()
gibt die aktuelle Anzahl von 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
s ab. Bibliotheken, die vonWorkManager
abhängig sind, können abfragen, wann diese Methode zuletzt aufgerufen wurde. Dazu wirdWorkManager.getLastCancelAllTimeMillis()
zur zusätzlichen Bereinigung des internen Status verwendet.WorkManager.pruneWork()
wurde hinzugefügt, um abgeschlossene Jobs aus der internen Datenbank zu entfernen. b/79950952, b/109710758
Änderungen im Verhalten
- Es wurde ein implizites Tag für alle
WorkRequest
hinzugefügt. Dies ist der voll qualifizierte Klassenname für dieWorker
. Dadurch können SieWorkRequest
s ohnetag
s entfernen oder wennid
nicht verfügbar ist. b/109572351
Nicht abwärtskompatible Änderungen
Worker.WorkerResult
wurde inWorker.Result
umbenannt.Worker.onStopped
hat jetzt einen zusätzlichenisCancelled
-Parameter, der auftrue
gesetzt wird, wennWorker
explizit abgebrochen wurde.
Version 1.0.0-alpha02
24. Mai 2018
Fehlerkorrekturen
- Ein
NullPointerException
-Fehler inState.isFinished()
wurde behoben. b/79550068 - Es wurde ein Problem behoben, durch das
Worker
s aufApplication.onCreate()
verschoben wurden. b/79660657 - Es wurde ein Problem behoben, bei dem Sie mehr Arbeiten planen konnten, als vom Betriebssystem zugelassen ist. b/79497378
- Die Bereinigung von Wakelocks, die mit
Worker
s verknüpft sind, wurde in den Hintergrundthread verschoben. - Die
AlarmManager
-Implementierung wird jetzt korrekt bereinigt, wenn alle ausstehenden Arbeiten abgeschlossen sind. - Bereinigungs-SQL-Abfragen, die nicht englische Sprachen betrafen, wurden 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-Funktionen und Fehlerbehebungen finden Sie in der Dokumentation. b/79691663
API-Änderungen
Worker
können reagieren, wenn sie angehalten wurden. MitWorker.isStopped()
kann geprüft werden, ob eineWorker
angehalten wurde. MitWorker.onStopped()
können einfache Bereinigungsvorgänge ausgeführt werden.- Die
Worker.getTags()
API gibt eineSet
von Tags zurück, die mitWorker
verknüpft sind. - Es wurden
javax.time.Duration
-Überlastungen für APIs hinzugefügt, die eine Kombination aus Dauer undTimeUnit
s nehmen. Dieser wird von@RequiresApi(26)
geschützt. WorkManager
Erweiterungen wurden aus dem Paket „androidx.work.ktx
“ in das Paket „androidx.work
“ verschoben. Die alten Erweiterungen werden nicht mehr unterstützt und 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 von
garantierten und einschränkungssensitiven Hintergrundarbeit. Diese erste Version ist 1.0.0-alpha01
.