WorkManager
Letzte Aktualisierung | Stabile Version | Releasekandidat | Beta-Ausgabe | Alphaversion |
---|---|---|---|---|
23. April 2025 | 2.10.1 | - | – | - |
Abhängigkeiten deklarieren
Wenn Sie eine Abhängigkeit von WorkManager hinzufügen möchten, müssen Sie Ihrem Projekt das Maven-Repository von Google hinzufügen:
Fügen Sie der Datei build.gradle
für Ihre App oder Ihr Modul die Abhängigkeiten für die erforderlichen Artefakte hinzu:
dependencies { def work_version = "2.10.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" }
dependencies { val work_version = "2.10.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") }
Weitere Informationen zur Verwendung von Kotlin-Erweiterungen finden Sie in der ktx-Dokumentation.
Weitere Informationen zu Abhängigkeiten finden Sie unter Build-Abhängigkeiten hinzufügen.
Feedback
Ihr Feedback hilft uns, Jetpack zu verbessern. Bitte teilen Sie uns mit, wenn Sie neue Probleme entdecken oder Ideen zur Verbesserung dieser Bibliothek haben. Sehen Sie sich die vorhandenen Probleme in dieser Bibliothek an, bevor Sie ein neues erstellen. Sie können einer vorhandenen Anfrage Ihre Stimme geben, indem Sie auf die Schaltfläche mit dem Stern klicken.
Weitere Informationen finden Sie in der Dokumentation zum Issue Tracker.
Version 2.10
Version 2.10.1
23. April 2025
androidx.work:work-*:2.10.1
wird veröffentlicht. Version 2.10.1 enthält diese Commits.
Fehlerkorrekturen
- Verringern Sie die Wahrscheinlichkeit, dass
TooManyRequestsException
durch die Registrierung einerWorkManager
durchWorkManager
geworfen wird, die für das Tracking von Einschränkungen verwendet wird.NetworkCallback
((b/231499040)[https://issuetracker.google.com/231499040], b309d5).
Version 2.10.0
30. Oktober 2024
androidx.work:work-*:2.10.0
wird veröffentlicht. Version 2.10.0 enthält diese Commits.
Wichtige Änderungen seit Version 2.9.1
- Jobs aus
WorkManager
wurden jetzt mit Trace-Tags versehen. Dadurch ist „adb shell dumpsys jobscheduler“ viel verständlicher, da der Name des ausgeführten Workers enthalten ist. Außerdem werden Trace-Abschnitte um wichtige Bereiche vonWorkManager
herum hinzugefügt. Configuration.workerCoroutineContext
wurde zur Steuerung des Dispatchers hinzugefügt, in demCoroutineWorker
ausgeführt wird.- Entwickler können
NetworkRequest
über die MethodeConstraints.setRequiredNetworkRequest
als Einschränkung für einen Worker angeben. So können Sie genauer festlegen, in welchem Netzwerk dieser Worker ausgeführt werden soll. WorkManager
2.10.0 wird jetzt mit SDK 35 kompiliert und enthält verschiedene Änderungen für die Kompatibilität mit SDK 35.
Version 2.10.0-rc01
24. Oktober 2024
androidx.work:work-*:2.10.0-rc01
wird veröffentlicht. Version 2.10.0-rc01 enthält diese Commits.
Version 2.10.0-beta01
2. Oktober 2024
androidx.work:work-*:2.10.0-beta01
wird veröffentlicht. Version 2.10.0-beta01 enthält diese Commits.
Version 2.10.0-alpha04
18. September 2024
androidx.work:work-*:2.10.0-alpha04
wird veröffentlicht. Version 2.10.0-alpha04 enthält diese Commits.
API-Änderungen
- Fügen Sie den Grund für das Beenden
STOP_REASON_FOREGROUND_SERVICE_TIMEOUT
hinzu, wenn ein Worker im Vordergrund aufgrund eines Zeitlimits für die Ausführung beendet wird. Hierbei müssen Sie den Typ des Dienstes im Vordergrund angeben. (Ibd0af)
Version 2.10.0-alpha03
4. September 2024
androidx.work:work-*:2.10.0-alpha03
wird veröffentlicht. Version 2.10.0-alpha03 enthält diese Commits.
Neue Funktionen
- Jobs aus
WorkManager
wurden jetzt mit Trace-Tags versehen. Dadurch ist „adb shell dumpsys jobscheduler“ viel verständlicher, da der Name des ausgeführten Workers enthalten ist. Außerdem werden Trace-Abschnitte um wichtige Bereiche vonWorkManager
herum hinzugefügt.
API-Änderungen
- WorkManager 2.10.0 wird jetzt mit SDK 35 kompiliert.
- Behebung des Zeitüberschreitungsproblems bei Vordergrund-Workern vom Typ „kurzer Dienst“ und „Datensynchronisierung“, das zu einer ANR führte, wenn
WorkManager
stopSelf()
nicht aufgerufen hat. Diese Korrektur gilt nur für Geräte mit API 34 und 35, auf denen Arten von Diensten im Vordergrund eingeführt wurden. (ca06b2, b/364508145) - Neue
WorkerParameters
APIs, mit denen der Remoteprozess, an den dieWorker
bei Verwendung einerWorkerFactory
gebunden ist, umgeschaltet werden kann. (Ibdc8a, Ie8a90, I7373f)
Fehlerkorrekturen
- Behebung eines Absturzes, der durch den Versuch von
WorkManager
verursacht wurde, einen lang laufenden Worker (d.h. einen Worker im Vordergrund) neu zu starten, wenn der Typ der Arbeit im Vordergrund Android 14-Voraussetzungsberechtigungen hatte, die widerrufen wurden. (b/333957914) - Die manuelle Kennzeichnung des Zugriffs auf neue Plattform-APIs wurde entfernt, da dies bei Verwendung von R8 mit AGP 7.3 oder höher (z.B. R8 Version 3.3) und für alle Builds bei Verwendung von AGP 8.1 oder höher (z.B. D8 Version 8.1) automatisch über die API-Modellierung erfolgt. Kunden, die AGP nicht verwenden, wird empfohlen, auf D8 Version 8.1 oder höher zu aktualisieren. Weitere Details findest du in diesem Artikel. (Ia60e0, b/345472586)
Version 2.10.0-alpha02
17. April 2024
androidx.work:work-*:2.10.0-alpha02
wird veröffentlicht. Version 2.10.0-alpha02 enthält diese Commits.
API-Änderungen
- Es ist jetzt möglich, Trace-Bereiche über eine konfigurierbare
@RestrictTo
Tracer
inWorkManager
auszugeben. (I17d7f, b/260214125) Configuration.workerCoroutineContext
wurde zur Steuerung des Dispatchers hinzugefügt, in demCoroutineWorker
ausgeführt wird. Es ist hilfreich, die Verwendung vonDispatchers.Default
inWorkManager
vollständig zu vermeiden. (Icd1b7)- Benutzerdefinierte Ausnahmebehandlungen für Workers hinzufügen (Ib1b74, b/261190695)
OneTimeWorkRequest.Builder
undPeriodicWorkRequest.Builder
können jetzt mitKClass
anstelle vonClass
erstellt werden:val request = OneTimeWorkRequest.Builder(Worker::class).setConstraints(...).build()
(Ib55f6)- Die Klasse
WorkManager
wurde zu Kotlin migriert. Methoden, dieLiveData
,ListenableFuture
oderFlow
zurückgeben, liefern jetzt korrekte Informationen zur Nullbarkeit. Möglicherweise sind Änderungen am Quellcode der Kunden erforderlich, wenn die Annahmen zur Nullbarkeit in diesem Code falsch waren. (If6757)
Version 2.10.0-alpha01
24. Januar 2024
androidx.work:work-*:2.10.0-alpha01
wird veröffentlicht. Version 2.10.0-alpha01 enthält diese Commits.
Neue Funktionen
- Entwickler können
NetworkRequest
über die MethodeConstraints.setRequiredNetworkRequest
als Einschränkung für einen Worker angeben. So können Sie genauer festlegen, in welchem Netzwerk dieser Worker ausgeführt werden soll.
API-Änderungen
- Es ist jetzt möglich,
NetworkRequest
als Einschränkung anzugeben. (Id98a1, b/280634452)
Version 2.9
Version 2.9.1
7. August 2024
androidx.work:work-*:2.9.1
wird veröffentlicht. Version 2.9.1 enthält diese Commits.
Fehlerkorrekturen
- Behebung eines Absturzes, der durch den Versuch von
WorkManager
verursacht wurde, einen lang laufenden Worker (d.h. einen Worker im Vordergrund) neu zu starten, wenn der Typ der Arbeit im Vordergrund Voraussetzungsberechtigungen für Android 14 hatte, die widerrufen wurden. (b/333957914)
Version 2.9.0
29. November 2023
androidx.work:work-*:2.9.0
wird veröffentlicht. Version 2.9.0 enthält diese Commits.
Wichtige Änderungen seit Version 2.8.0
- Beobachtbarkeit über
Flow
Anstelle vonLiveData
kann der Fortschritt der Mitarbeiter jetzt überWorkManager.getWorkInfosFlow
und ähnliche Methoden in Flows beobachtet werden. - Jetzt gibt
WorkManager
einen Hinweis darauf, warum ein Worker zuvor angehalten wurde. Sie kann über die MethodegetStopReason()
von einem Worker selbst oder überWorkInfo
übergetStopReason()
abgefragt werden. - Präzise Planung von periodischen Workern über
setNextScheduleTimeOverride
So kann der nächste Zeitplan für den regelmäßigen Ablauf dynamisch berechnet werden. Dies ermöglicht die Implementierung erweiterter Funktionen wie adaptiver Aktualisierungszeiten, benutzerdefinierter Wiederholungsmechanismen oder die Ausführung eines Newsfeed-Workers, bevor der Nutzer jeden Morgen aufwacht, ohne dass es zu Abweichungen kommt.ExistingPeriodicWorkPolicy.UPDATE
sollte mit diesen Techniken verwendet werden, um zu vermeiden, dass ein derzeit ausgeführter Worker abgebrochen wird, während der nächste geplant wird. - Tests von WorkManager mit Thread-Matching in der Produktion
ExecutorsMode.PRESERVE_EXECUTORS
kann ininitializeTestWorkManager
verwendet werden, um inConfiguration
festgelegte Executors beizubehalten und den echten Hauptthread zu verwenden. - Coroutines APIs wie
CoroutineWorker
wurden aus dem zusätzlichen Artefakt „work-runtime-ktx“ in das Hauptartefakt „work-runtime“ verschoben. „work-runtime-ktx“ ist jetzt leer.
API-Änderungen
stopReason
wurdeWorkInfo
hinzugefügt. Dadurch wirdstopReason
nach der Ausführung des Workers verfügbar gemacht. Dies kann bei der Berichterstellung hilfreich sein, da eine App nach dem Beenden eines Workers sehr schnell beendet werden kann.stopReason
(I21386)Clock
kann über die Konfiguration festgelegt und zur Steuerung der Ausführungsabfolge von Worker-Tests verwendet werden. (Ic586e)- Der Methode
ListenableWorker
wurde die MethodegetStopReason()
hinzugefügt, die einen Hinweis darauf gibt, warum der Worker angehalten wurde. (I07060) WorkManagerTestInitHelper#closeWorkDatabase()
wurde hinzugefügt, um die Warnung von Closeguard zu geleakten Ressourcen zu vermeiden. (Ia8d49)- Der Konstruktor von
WorkInfo
ist jetzt öffentlich, was bei Tests nützlich sein kann. (Ia00b6, b/209145335) work-runtime-ktx
ist jetzt leer.CoroutineWorker
und andere Kotlin-spezifische Dienstprogramme sind jetzt im Haupt-Arbeitslaufzeit-Artefakt verfügbar. (I71a9a)- Die Methode
setNextScheduleTimeOverride
wurde hinzugefügt, mit der sich regelmäßige Arbeitszeiten genau festlegen lassen (I3b4da) getNextScheduleTimeMillis
wurde hinzugefügt, um Informationen zur geplanten Ausführungszeit inWorkInfo
zu erhalten. (I797e4)WorkInfo
werden Informationen zur anfänglichen Verzögerung und zur Periodizität hinzugefügt. (I52f2f)- Methode zum Beobachten von Mitarbeitern über Workflows über die Methoden
getWorkInfosByTagFlow
,getWorkInfoByIdFlow
,getWorkInfosForUniqueWorkFlow
undgetWorkInfosFlow
hinzugefügt (If122a) - Den Konstruktoren und Properties von
Constraints
wurden fehlende@RequiresApi(...)
-Anmerkungen hinzugefügt. Sie sind jetzt mit entsprechenden Anmerkungen zu Settern inConstraints.Builder
abgeglichen, die aus frühen Versionen vonWorkManager
stammen. (I6d7d2) WorkManager
hat jetzt ein separates Limit für Content-URI-Worker, um ihnen garantierte Slots inJobScheduler
zuzuweisen und so zu verhindern, dass bei hoher Auslastung Inhalte nicht aktualisiert werden. Das Limit kann überConfiguration.Builder.setContentUriTriggerWorkersLimit
konfiguriert werden. (Ic128f)WorkInfo
werden Einschränkungen hinzugefügt. (I162c0)
Version 2.9.0-rc01
18. Oktober 2023
androidx.work:work-*:2.9.0-rc01
wird veröffentlicht. Version 2.9.0-rc01 enthält diese Commits.
- Keine Änderungen seit der letzten Betaversion
Version 2.9.0-beta01
6. September 2023
androidx.work:work-*:2.9.0-beta01
wird veröffentlicht. Version 2.9.0-beta01 enthält diese Commits.
API-Änderungen
- Konstanten für Haltestellengründe hinzugefügt, die von
WorkInfo.stopReason
undListenableWorker.stopReason
zurückgegeben werden (I0cc00)
Version 2.9.0-alpha02
26. Juli 2023
androidx.work:work-*:2.9.0-alpha02
wird veröffentlicht. Version 2.9.0-alpha02 enthält diese Commits.
Neue Funktionen
- Jetzt gibt
WorkManager
einen Hinweis darauf, warum ein Worker zuvor angehalten wurde. Sie kann über die MethodegetStopReason()
von einem Worker selbst oder überWorkInfo
übergetStopReason()
abgefragt werden.
API-Änderungen
stopReason
wurdeWorkInfo
hinzugefügt. Sie stelltstopReason
nach dem Ausführen des Workers zur Verfügung. Dies kann bei der Berichterstellung hilfreich sein, da eine App nach dem Beenden eines Workers sehr schnell beendet werden kann.stopReason
(I21386)- Clock kann über die Konfiguration festgelegt und zur Steuerung der Ausführungsabfolge von Worker-Tests verwendet werden. (Ic586e)
- Der Methode
ListenableWorker
wurde die MethodegetStopReason()
hinzugefügt, die einen Hinweis darauf gibt, warum der Worker angehalten wurde. (I07060) WorkManagerTestInitHelper#closeWorkDatabase()
hinzugefügt, um die Warnung von Closeguard zu geleakten Ressourcen zu vermeiden. (Ia8d49)
Fehlerkorrekturen
- Es ist jetzt möglich,
overrideNextScheduleTime
mitTestDriver
zu umgehen. Außerdem wurden Probleme mit der Testbarkeit behoben. (Ic2905)
Version 2.9.0-alpha01
7. Juni 2023
androidx.work:work-*:2.9.0-alpha01
wird veröffentlicht. Version 2.9.0-alpha01 enthält diese Commits.
Neue Funktionen
- Beobachtbarkeit über
Flow
Anstelle vonLiveData
kann der Fortschritt der Mitarbeiter jetzt überWorkManager.getWorkInfosFlow
und ähnliche Methoden in Flows beobachtet werden. - Präzise Planung von periodischen Workern über
setNextScheduleTimeOverride
So kann der nächste Zeitplan für den regelmäßigen Ablauf dynamisch berechnet werden. Dies ermöglicht die Implementierung erweiterter Funktionen wie adaptiver Aktualisierungszeiten, benutzerdefinierter Wiederholungsmechanismen oder die Ausführung eines Newsfeed-Workers, bevor der Nutzer jeden Morgen aufwacht, ohne dass es zu Abweichungen kommt.ExistingPeriodicWorkPolicy.UPDATE
sollte mit diesen Techniken verwendet werden, um zu vermeiden, dass ein derzeit ausgeführter Worker abgebrochen wird, während der nächste geplant wird. WorkManager
führt Tests mit Threads durch, die der Produktion entsprechen. MitExecutorsMode.PRESERVE_EXECUTORS
können Sie die inConfiguration
festgelegten Executors beibehalten und den echten Hauptthread verwenden.- Coroutines APIs wie
CoroutineWorker
wurden aus dem 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 bei Tests nützlich sein. (Ia00b6, b/209145335) work-runtime-ktx
ist jetzt leer.CoroutineWorker
und andere kotlinspezifische Dienstprogramme sind jetzt im Haupt-work-runtime
-Artefakt verfügbar. (I71a9a)- Die Methode
setNextScheduleTimeOverride
wurde hinzugefügt, mit der sich regelmäßige Arbeitszeiten genau festlegen lassen (I3b4da) getEarliestRunTimeMillis
wurde ingetNextScheduleTimeMillis
umbenannt. (I2bd7a)- Die Informationen zur nächsten geplanten Ausführungszeit werden
WorkInfo
hinzugefügt. (I797e4) WorkInfo
werden Informationen zur anfänglichen Verzögerung und zur Periodizität hinzugefügt. (I52f2f)- Methode zum Beobachten von Mitarbeitern über Workflows über die Methoden
getWorkInfosByTagFlow
,getWorkInfoByIdFlow
,getWorkInfosForUniqueWorkFlow
undgetWorkInfosFlow
hinzugefügt (If122a) - Fehlende
@RequiresApi(...)
-Anmerkungen zu den Konstruktoren und Properties von Einschränkungen hinzugefügt. Sie sind jetzt mit entsprechenden Anmerkungen zu Settern inConstraints.Builder
abgeglichen, die aus frühen Versionen vonWorkManager
stammen. (I6d7d2) WorkManager
hat jetzt ein separates Limit für Content-URI-Worker, um ihnen garantierte Slots inJobScheduler
zuzuweisen und so zu verhindern, dass bei hoher Auslastung Inhalte nicht aktualisiert werden. Das Limit kann überConfiguration.Builder.setContentUriTriggerWorkersLimit
konfiguriert werden. (Ic128f)WorkInfo
werden Einschränkungen hinzugefügt. (I162c0)
Version 2.8
Version 2.8.1
22. März 2023
androidx.work:work-*:2.8.1
wird veröffentlicht. Version 2.8.1 enthält diese Commits.
Fehlerkorrekturen
- ANR in
RescheduleReceiver
wurde korrigiert, da zuvor zwei gleichzeitige Übertragungen nicht richtig verarbeitet wurden. (b/236906724)
Version 2.8.0
8. Februar 2023
androidx.work:work-*:2.8.0
wird veröffentlicht. Version 2.8.0 enthält diese Commits.
Wichtige Änderungen seit Version 2.7.0
Neue Funktionen
- Es wurde eine Möglichkeit hinzugefügt,
WorkRequests
auf nicht störende Weise zu aktualisieren, wobei die ursprüngliche Einreihungszeit, die Verknüpfung usw. beibehalten werden. Weitere Informationen finden Sie im detaillierten Blogpost zu dieser Funktion sowie in den JavaDoc-Dokumenten fürWorkManager.updateWork
undExistingPeriodicWorkPolicy.UPDATE
.
API-Änderungen
WorkManager.updateWork
wurde hinzugefügt, um Aufgaben zu aktualisieren und dabei die ursprüngliche Einreihungszeit und die Verknüpfung beizubehalten.(I9a248, b/219446409)ExistingPeriodicWorkPolicy.UPDATE
wurde hinzugefügt. Mit dieser Richtlinie können Sie ein periodisches Werk anhand des Namens aktualisieren. Sie ähnelt der vorhandenenREPLACE
, ist aber weniger aufdringlich: Ein Worker wird nicht abgebrochen, wenn er gerade ausgeführt wird, und die Einreihtezeit bleibt erhalten. Anfangsverzögerung und ‑zeitraum werden nicht anhand der Aktualisierungszeit, sondern anhand der ursprünglichen Einreihtezeit berechnet.REPLACE
wurde eingestellt, um Verwechslungen zwischen den sehr ähnlich klingendenREPLACE
undUPDATE
zu vermeiden. Wenn Sie die vorherige Semantik vonREPLACE
beibehalten möchten, können Sie das neu hinzugefügteCANCEL_AND_REENQUEUE
verwenden, das mitREPLACE
identisch ist. (I985ed, b/219446409)- Es ist jetzt möglich, Planungsausnahmen zu erfassen, indem
Consumer<Throwable>
über setSchedulingExceptionHandler bereitgestellt wird. - Es ist jetzt möglich, über setInitializationExceptionHandler eine
Consumer<Throwable>
anzugeben, um festzustellen, ob beim Initialisieren von WorkManager Probleme aufgetreten sind. - Die Inline-Hilfe für
OneTimeWorkRequest
undPeriodicWorkRequest
wurde vonandroidx.work:work-runtime-ktx
zuandroidx.work:work-runtime
verschoben (I0010f, b/209145335) - Die Hilfsmethoden
WorkQuery.fromIds
,WorkQuery.fromStates
,WorkQuery.fromUniqueWorkNames
undWorkQuery.fromTags
wurden hinzugefügt, umWorkQuery
direkt zu erstellen. (b/199919736) (If48f2, b/199919736) getForegroundInfo
wurde zuWorker
hinzugefügt. (Ic1ead)RxWorker
sowohl für RxJava 2 als auch für RxJava 3 gibt jetztsetForeground
zurück, dasCompletable
zurückgibt, anstelle vonsetForegroundInfoAsync
, dasListenableFuture
zurückgibt.- Bei
RxWorker
für RxJava 2 und RxJava 3 gibtgetForegroundInfo
Single
zurück, was anstelle vongetForegroundInfoAsync
verwendet werden kann, dasListenableFuture
zurückgibt. (b/203851459) - Constraints können jetzt direkt erstellt werden, anstatt
Constraints.Builder
zu verwenden. Das ist für Kotlin-Nutzer praktisch. (Idc390, b/137568653) - Es wurde die Möglichkeit hinzugefügt, zu prüfen, ob
WorkManager
initialisiert wurde. Außerdem wurde eine neuegetConfiguration()
API für Bibliotheksentwickler hinzugefügt, mit der die Konfiguration abgerufen werden kann, mit derWorkManager
initialisiert wurde. (I6eff3, b/212300336)
Fehlerkorrekturen
- Ein Problem mit dem gierigen Scheduler wurde behoben, das verhinderte, dass Worker bei hoher Auslastung sofort ausgeführt wurden. (I9686b, b/248111307)
@RequiresPermission
wurde APIs hinzugefügt, für die die BerechtigungPOST_NOTIFICATIONS
in SDK 33 und höher gewährt werden muss. (Ie542e, b/238790278)- Übertragen Sie Stornierungen im
CoroutineScope
an denListenableFuture
, wenn SiesuspendCancellableCoroutine
verwenden.
Version 2.8.0-rc01
7. Dezember 2022
androidx.work:work-*:2.8.0-rc01
wird veröffentlicht. Version 2.8.0-rc01 enthält diese Commits.
Neue Funktionen
- Keine neuen Funktionen in diesem Release. Dies ist hauptsächlich eine Versionsaktualisierung.
Version 2.8.0-beta02
9. November 2022
androidx.work:work-*:2.8.0-beta02
wird veröffentlicht. Version 2.8.0-beta02 enthält diese Commits.
Fehlerkorrekturen
- Die
equals
-Methode inWorkInfo
wurde korrigiert, da 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
wird veröffentlicht. Version 2.8.0-beta01 enthält diese Commits.
Fehlerkorrekturen
- Ein Problem mit dem gierigen Scheduler wurde behoben, das verhinderte, dass Worker bei hoher Auslastung sofort ausgeführt wurden. (I9686b, b/248111307)
Version 2.8.0-alpha04
7. September 2022
androidx.work:work-*:2.8.0-alpha04
wird veröffentlicht. Version 2.8.0-alpha04 enthält diese Commits.
API-Änderungen
WorkerInfo.getGeneration()
undWorkerParameters.getGeneration()
wurden hinzugefügt, die die Generation eines Workers zurückgeben. Ein Worker hat mehrere Generationen, wenn er überWorkManager.updateWork
oderWorkManager.enqueueUniquePeriodicWork
mitExistingPeriodicWorkPolicy.UPDATE
aktualisiert wurde. Wenn der Worker gerade ausgeführt wird, kann diese Methode eine neuere Generation als die 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
wird veröffentlicht. Version 2.8.0-alpha03 enthält diese Commits.
Neue Funktionen
- Es wurde eine Möglichkeit hinzugefügt,
WorkRequests
auf nicht störende Weise zu aktualisieren, wobei die ursprüngliche Einreihungszeit, die Verknüpfung usw. beibehalten werden. Weitere Informationen finden Sie unterWorkManager.updateWork
undExistingPeriodicWorkPolicy.UPDATE
.
API-Änderungen
WorkManager.updateWork
wurde hinzugefügt, um Aufgaben zu aktualisieren und dabei die ursprüngliche Einreihungszeit und die Verknüpfung beizubehalten.(I9a248, b/219446409)ExistingPeriodicWorkPolicy.UPDATE
wurde hinzugefügt. Mit dieser Richtlinie können Sie ein periodisches Werk anhand des Namens aktualisieren. Sie ähnelt der vorhandenenREPLACE
, ist aber weniger aufdringlich: Ein Worker wird nicht abgebrochen, wenn er gerade ausgeführt wird, und die Einreihtezeit bleibt erhalten. Anfangsverzögerung und ‑zeitraum werden nicht anhand der Aktualisierungszeit, sondern anhand der ursprünglichen Einreihtezeit berechnet.REPLACE
wurde eingestellt, um Verwechslungen zwischenREPLACE
undUPDATE
zu vermeiden, die sich sehr ähnlich sind. Wenn Sie die vorherige Semantik vonREPLACE
beibehalten möchten, können Sie das neu hinzugefügteCANCEL_AND_REENQUEUE
verwenden, das mitREPLACE
identisch ist. (I985ed, b/219446409)- Sie können Ausnahmen bei der Planung abfangen, indem Sie eine
SchedulingExceptionHandler
definieren. (I033eb) - Die Inline-Hilfe für
OneTimeWorkRequest
undPeriodicWorkRequest
wurde vonandroidx.work:work-runtime-ktx
zuandroidx.work:work-runtime
verschoben (I0010f, b/209145335)
Fehlerkorrekturen
@RequiresPermission
wurde APIs hinzugefügt, für die die Berechtigung POST_NOTIFICATIONS in SDK 33 und höher gewährt werden muss. (Ie542e, b/238790278)
Version 2.8.0-alpha02
6. April 2022
androidx.work:work-*:2.8.0-alpha02
wird veröffentlicht. Version 2.8.0-alpha02 enthält diese Commits.
API-Änderungen
- Constraints können jetzt direkt erstellt werden, anstatt Builder zu verwenden. Das ist für Kotlin-Nutzer praktisch. (Idc390, b/137568653)
- Es wurde die Möglichkeit hinzugefügt, zu prüfen, ob
WorkManager
initialisiert wurde. Außerdem wurde eine neuegetConfiguration()
API für Bibliotheksentwickler hinzugefügt, mit der die Konfiguration abgerufen werden kann, mit derWorkManager
initialisiert wurde. (I6eff3, b/212300336)
Version 2.8.0-alpha01
12. Januar 2022
androidx.work:work-*:2.8.0-alpha01
wird veröffentlicht. Version 2.8.0-alpha01 enthält diese Commits.
API-Änderungen
- Die Hilfsmethoden
WorkQuery.fromStates
,WorkQuery.fromUniqueWorkNames
undWorkQuery.fromTags
wurden hinzugefügt, um WorkQuery direkt zu erstellen. (If48f2, b/199919736) - Es werden experimentelle BuildCompat-Methoden für zukünftige SDKs hinzugefügt (Iafd82, b/207528937)
- Fügen Sie
getForegroundInfo
zuWorker
hinzu. (Ic1ead) - Es wurden Hilfsmethoden
WorkQuery.fromIds
zum Erstellen von WorkQuerys direkt aus IDs hinzugefügt. (Ie5bdf, b/199919736) - RxWorker hat jetzt
setForeground
, dasCompletable
zurückgibt, das anstelle vonsetForegroundInfoAsync
verwendet werden kann, dasListenableFuture
zurückgibt. (I85156) - RxWorker für RxJava 2 hat jetzt
getForegroundInfo
, dasSingle
zurückgibt, anstelle vongetForegroundInfoAsync
, dasListenableFuture
zurückgibt. (I21c91, b/203851459) - RxWorker für RxJava 3 hat jetzt
getForegroundInfo
, dasSingle
zurückgibt, anstelle vongetForegroundInfoAsync
, dasListenableFuture
zurückgibt. (I1ca8a) - RxWorker hat jetzt
setForeground
, dasCompletable
zurückgibt, das anstelle vonsetForegroundInfoAsync
verwendet werden kann, dasListenableFuture
zurückgibt. (I992a3, b/203851459)
Fehlerkorrekturen
- Übertragen Sie Stornierungen im
CoroutineScope
an denListenableFuture
, wenn SiesuspendCancellableCoroutine
verwenden. (I77e63)
Version 2.7
Version 2.7.1
17. November 2021
androidx.work:work-*:2.7.1
wird veröffentlicht. Version 2.7.1 enthält diese Commits.
Fehlerkorrekturen
- Stornierungen im
CoroutineScope
werden bei Verwendung vonsuspendCancellableCoroutine
an denListenableFuture
weitergegeben. (I77e63) - Es wird sofort eine Ausnahme ausgelöst, wenn verzögerte Arbeitsanfragen als vorrangig gekennzeichnet werden. bef1762
Version 2.7.0
13. Oktober 2021
androidx.work:work-*:2.7.0
wird veröffentlicht. Version 2.7.0 enthält diese Commits.
Wichtige Änderungen seit Version 2.6.0
WorkManager führt eine neue
WorkRequest.Builder.setExpedited(...)
API ein, die bei den Einschränkungen für Dienste im Vordergrund in Android 12 hilft.Wenn Sie
setExpedited(...)
verwenden, delegiert WorkManager ab Android 12 an beschleunigte Jobs im JobScheduler. Bei früheren Android-Versionen wird die Abwärtskompatibilität durch die Delegierung an einen Dienst im Vordergrund sichergestellt.
Version 2.7.0-rc01
29. September 2021
androidx.work:work-*:2.7.0-rc01
wird veröffentlicht. Version 2.7.0-rc01 enthält diese Commits.
Diese Version ist mit androidx.work:work-*:2.7.0-beta01
identisch.
Version 2.7.0-beta01
1. September 2021
androidx.work:work-*:2.7.0-beta01
wird veröffentlicht. Version 2.7.0-beta01 enthält diese Commits.
Neue Funktionen
- Reduzierung von SQLite-Konflikten bei der Initialisierung von WorkManager durch mehrere Prozesse
API-Änderungen
- Entfernen Sie
@ExperimentalExpeditedWork
APIs, da die zugrunde liegenden Plattform-APIs für Android 12 (S) stabil sind. (aosp/1792806)
Fehlerkorrekturen
- Bessere Fehlermeldung für Mitarbeiter, die die beschleunigte Bearbeitung nicht implementiert haben.
getForegroundInfoAsync()
(aosp/1809376)
Version 2.7.0-alpha05
21. Juli 2021
androidx.work:work-*:2.7.0-alpha05
wird veröffentlicht. Version 2.7.0-alpha05 enthält diese Commits.
Diese Version enthält außerdem Fehlerkorrekturen aus der WorkManager-Version 2.6.0-beta02
.
Version 2.7.0-alpha04
2. Juni 2021
androidx.work:work-*:2.7.0-alpha04
wird veröffentlicht.
Diese Version enthält auch die Änderungen aus der Version 2.6.0-beta01.
API-Änderungen
ListenableWorker.setForegroundAsync()
ist nicht mehr eingestellt.- Wir empfehlen, nach Möglichkeit die
WorkRequest.Builder.setExpedited(...)
API zu verwenden. Um Situationen besser zu unterstützen, in denen die App nicht den Einschränkungen für Dienste im Vordergrund unterliegt, können Entwickler dieListenableWorker.setForegroundAsync()
API verwenden. - Wenn
ListenableWorker.setForegroundAsync()
aufgerufen wird, während für die App Einschränkungen für Dienste im Vordergrund gelten, wird die ForegroundServiceStartNotAllowedException ausgelöst.
Fehlerkorrekturen
- Wenn beschleunigte Jobs neu geplant werden, sind sie nicht mehr beschleunigt. Sie werden zu Regeljobs.
Version 2.7.0-alpha03
21. April 2021
androidx.work:work-*:2.7.0-alpha03
wird veröffentlicht. Version 2.7.0-alpha03 enthält diese Commits.
Neue Funktionen
In WorkManager
2.6.0-alpha02
: Unterstützung für Worker hinzugefügt, die in jedem Prozess ausgeführt werden können. (Iaf200)WorkManager
2.6.0-alpha02
: Es wurde eineRemoteCoroutineWorker
hinzugefügt, eine Implementierung vonRemoteListenableWorker
, die an einen Remote-Prozess gebunden werden kann. (I30578)
API-Änderungen
- WorkManager
2.6.0-alpha02
:Unterstützung für die NetzwerkeinschränkungTEMPORARILY_UNMETERED
hinzugefügt. (I08d5e) - WorkManager
2.6.0-alpha02
:Unterstützung für Multi-Prozess-Worker fürsetProgressAsync()
. (Ib6d08) - Über WorkManager
2.6.0-alpha02
:Machen SieWorkManagerInitializer
öffentlich, damit andereandroidx.startup.Initializer
s diese als Abhängigkeiten verwenden können. (I5ab11)
Version 2.7.0-alpha02
10. März 2021
androidx.work:work-*:2.7.0-alpha02
wird veröffentlicht. Version 2.7.0-alpha02 enthält diese Commits.
Fehlerkorrekturen
- Die Veränderlichkeit von
PendingIntent
muss explizit angegeben werden, um einen Absturz bei der Ausrichtung auf Android 12 zu beheben. (b/180884673)
Version 2.7.0-alpha01
18. Februar 2021
androidx.work:work-*:2.7.0-alpha01
wird veröffentlicht. Version 2.7.0-alpha01 enthält diese Commits.
Neue Funktionen
Mit WorkManager wird eine neue
WorkRequest.Builder.setExpedited(...)
API eingeführt, die die Einschränkungen für Dienste im Vordergrund in Android 12 berücksichtigt.Apps können keinen Dienst im Vordergrund mehr starten, wenn sie im Hintergrund ausgeführt werden. Um lang andauernde Aufgaben, die zuvor an den Lebenszyklus eines Dienstes im Vordergrund gebunden waren, besser zu unterstützen, können Anwendungen
WorkRequest
als beschleunigt kennzeichnen.Diese API ersetzt die
setForegroundAsync(...)
-/setForeground(...)
-APIs, die jetzt verworfen wurden.Wenn Sie
setExpedited(...)
verwenden, delegiert WorkManager ab Android 12 an beschleunigte Jobs inJobScheduler
. Gleichzeitig wird für frühere Android-Versionen die Abwärtskompatibilität durch die Delegierung an Dienste im Vordergrund sichergestellt.
API-Änderungen
- Unterstützung für beschleunigte
WorkRequest
s hinzufügen
Version 2.6.0
Version 2.6.0
1. September 2021
androidx.work:work-*:2.6.0
wird veröffentlicht. Version 2.6.0 enthält diese Commits.
Wichtige Änderungen seit Version 2.5.0
WorkManager verwendet jetzt
androidx.startup
, um WorkManager zu initialisieren. Wenn Sietools:node="remove"
verwendet haben, dieContentProvider
, die in der Vergangenheit zum Initialisieren von WorkManager verwendet wurde, müssen Sie stattdessen Folgendes tun.<provider android:name="androidx.startup.InitializationProvider" android:authorities=\"${applicationId}.androidx-startup" android:exported="false" tools:node=\"merge"> <!-- If you are using androidx.startup to initialize other components --> <meta-data android:name="androidx.work.WorkManagerInitializer" android:value="androidx.startup" tools:node="remove" /> </provider>
<!-- If you want to disable android.startup completely. --> <provider android:name="androidx.startup.InitializationProvider" android:authorities="${applicationId}.androidx-startup" tools:node="remove" />
Unterstützung für Worker hinzugefügt, die in jedem Prozess ausgeführt werden können. (Iaf200)
Es wurde eine
RemoteCoroutineWorker
hinzugefügt, 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
wird 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
wird veröffentlicht. Version 2.6.0-beta02 enthält diese Commits.
Fehlerkorrekturen
RemoteWorkManager
wird jetzt richtig vonRemoteWorkManagerService
getrennt, sodassRemoteWorkManagerService
richtig bereinigt werden kann. aosp/1730694RemoteListenableWorker
wird jetzt korrekt vonRemoteWorkerService
getrennt, sodassRemoteWorkerService
korrekt bereinigt werden kann. aosp/1743817ForceStopRunnable
wird jetzt nur noch im primären App-Prozess ausgeführt. Dies ist eine Optimierung und verhindert 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
wird veröffentlicht. Version 2.6.0-beta01 enthält diese Commits.
Diese Version enthält einige kleinere Verbesserungen an der Dokumentation. Die Version ist weitgehend mit 2.6.0-alpha02 identisch.
Version 2.6.0-alpha02
21. April 2021
androidx.work:work-*:2.6.0-alpha02
wird veröffentlicht. Version 2.6.0-alpha02 enthält diese Commits.
Neue Funktionen
Es wird Unterstützung für Worker hinzugefügt, die in jedem Prozess ausgeführt werden können. (Iaf200)
Es wurde ein
RemoteCoroutineWorker
hinzugefügt, eine Implementierung vonRemoteListenableWorker
, die an einen Remote-Prozess gebunden werden kann. (I30578)
API-Änderungen
- Unterstützung für die Netzwerkeinschränkung
TEMPORARILY_UNMETERED
hinzugefügt. (I08d5e) - Unterstützung für Multi-Process Worker für
setProgressAsync()
(Ib6d08) - Machen Sie
WorkManagerInitializer
öffentlich, damit andereandroidx.startup.Initializer
s diese als Abhängigkeiten verwenden können. (I5ab11)
Version 2.6.0-alpha01
24. März 2021
androidx.work:work-*:2.6.0-alpha01
wird veröffentlicht. Version 2.6.0-alpha01 enthält diese Commits.
Neue Funktionen
WorkManager
verwendet jetztandroidx.startup
, um WorkManager zu initialisieren. Bisher wurde dies vonandroidx.work.impl.WorkManagerInitializer
durchgeführt. (aosp/1608813)Wenn Sie
tools:node="remove"
verwendet haben, um den Prozesslebenszyklus in der Vergangenheit zu initialisieren, gehen Sie stattdessen so vor:ContentProvider
<provider android:name="androidx.startup.InitializationProvider" android:authorities=\"${applicationId}.androidx-startup" android:exported="false" tools:node=\"merge"> <!-- If you are using androidx.startup to initialize other components --> <meta-data android:name="androidx.work.impl.WorkManagerInitializer" android:value="androidx.startup" tools:node="remove" /> </provider>
(oder)
<!-- If you want to disable android.startup completely. --> <provider android:name="androidx.startup.InitializationProvider" android:authorities="${applicationId}.androidx-startup" tools:node="remove"> </provider>
API-Änderungen
- Fügen Sie eine
Result.getOutputData()
API hinzu, die dieoutputData
des ListenableWorker zurückgibt. (Ie51e3)
Fehlerkorrekturen
- Es wurde eine Problemumgehung für einen OEM-Fehler hinzugefügt, durch den bei Verwendung von
AlarmManager
APIs eineSecurityException
ausgelöst wird. (aosp/1587518)
Version 2.5.0
Version 2.5.0
27. Januar 2021
androidx.work:work-*:2.5.0
wird veröffentlicht. Version 2.5.0 enthält diese Commits.
Wichtige Änderungen seit Version 2.4.0
- Ein neues
:work:work-multiprocess
-Artefakt für Apps, die mehrere Prozesse verwenden. Dies führt zu Leistungssteigerungen, da die Planung von Arbeitsanfragen in einem einzigen Prozess zusammengefasst wird.- Wenn Sie
work-multiprocess
verwenden möchten, definieren Sie eine Abhängigkeit von:implementation "androidx.work:work-multiprocess:2.5.0"
- Weisen Sie mit Configuration.Builder.setDefaultProcessName(String) einen primären Prozess zu.
- Wenn Sie
work-multiprocess
verwenden, sollten Sie auch RemoteWorkManager verwenden, um IhreWorkRequest
s zu verwalten. RemoteWorkManager wendet sich immer an den angegebenen Prozess. Der In-Process-Scheduler wird ebenfalls im angegebenen Prozess ausgeführt.
- Wenn Sie
- Manchmal kann
ActivityManager
die InstanzJobService
nicht instanziieren, um einen Job zu starten. Dies führt dazu, dass der zugrunde liegende Job aufgrund eines Plattformfehlers stillschweigend gelöscht wird.WorkManager
sorgt jetzt dafür, dass es für jede einzelneWorkRequest
Sicherungsjobs gibt, wenn eineApplication
durch Abgleichjobs initialisiert wird. Dies verbessert die Zuverlässigkeit der Jobausführung erheblich. (b/172475041, aosp/1489577) WorkManager
schränkt das Datenbankwachstum ein, indem die Pufferdauer reduziert wird, in derWorkRequest
s nach Abschluss einesWorkRequest
erfasst werden. Die Dauer betrug zuvor7
Tage. Sie wurde auf1
Tage plus die Dauer von keepResultsForAtLeast reduziert. (aosp/1419708)- Die
TestListenableWorkerBuilder
unterstützt jetzt die reified Klasse, dieListenableWorker
erweitert, um Tests zu vereinfachen. (aosp/1443299, b/169787349) - Der WorkManager-Inspektor ist jetzt in Android Studio Arctic Fox verfügbar.
Version 2.5.0-rc01
13. Januar 2021
androidx.work:work-*:2.5.0-rc01
wird veröffentlicht. Version 2.5.0-rc01 enthält diese Commits.
Fehlerkorrekturen
- Ein Fehler wurde behoben, bei dem
getWorkInfosLiveData
bei der Verwendung derWorkQuery
-basierten API nicht richtig ungültig gemacht wurde, nachdem Entitäten aktualisiert wurden. (aosp/1540566, b/173769028) - Es wurde ein Fehler behoben, durch den Datenbanktransaktionen in einigen seltenen Fällen nicht als erfolgreich markiert wurden. Das führt auf einigen Motorola-Geräten zu Problemen. (aosp/1535368, b/175944460)
- Ein Fehler wurde behoben, durch den
NoSuchElementException
s beim Versuch, die Bindung zu einem toten Prozess aufzuheben, ignoriert wurden. (aosp/1530589) ConstraintTrackingWorker
wurde verbessert, sodass einListenableWorker
nur dann beendet wird, wenn es noch nicht beendet wurde. (aosp/1496844, b/172946965)- androidx.work-Bibliotheken auf Java 8 umstellen (Ibd2f2)
Version 2.5.0-beta02
2. Dezember 2020
androidx.work:work-*:2.5.0-beta02
wird veröffentlicht. Version 2.5.0-beta02 enthält diese Commits.
Fehlerkorrekturen
- Ein Fehler in
androidx.work:work-multiprocess
wurde behoben, bei dem WorkManager den aufrufenden Thread versehentlich blockierte, wenn versucht wurde, eine Bindung an den angegebenen Prozess herzustellen. (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 beim Beenden des Dienstes im Vordergrund bei Verwendung der
setForeground*
APIs hinzugefügt. (b/170924044, aosp/1489901)
Version 2.5.0-beta01
28. Oktober 2020
androidx.work:work-*:2.5.0-beta01
wird veröffentlicht. Version 2.5.0-beta01 enthält diese Commits.
Neue Funktionen
WorkManager
begrenzt automatisch die Anzahl derWorkRequest
s, die vom In-Process-Scheduler abgerufen werden können. Die Anfragen werden weiterhin in FIFO-Reihenfolge ausgeführt. (aosp/1455228)WorkManager
versucht, die Wiederherstellung auszuführen, 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
wird veröffentlicht. Version 2.5.0-alpha03 enthält diese Commits.
API-Änderungen
- Für
TestListenableWorkerBuilder
undTestWorkerBuilder
werden keine Rohtypen verwendet. (I883ad, b/169787349)
Fehlerkorrekturen
- Verwenden Sie
ApplicationInfo
, um den Namen des Standard-App-Prozesses zu ermitteln. (b/168716641, aosp/1429950) - Korrigieren Sie die Sichtbarkeitsregeln für
RemoteWorkManager
undRemoteWorkContinuation
. Diese APIs sind nicht mehr als@Restricted
gekennzeichnet. (aosp/1432091) - Proguard-Regeln für
:work:work-multiprocess
korrigieren (aosp/1432091) - Verbesserung des Benachrichtigungszyklus für lang andauernde Vorgänge, die an einen Dienst im Vordergrund gebunden sind. (b/168502234, aosp/1431331)
Version 2.5.0-alpha02
16. September 2020
androidx.work:work-*:2.5.0-alpha02
wird veröffentlicht. Version 2.5.0-alpha02 enthält diese Commits.
Neue Funktionen
- Fügen Sie WorkQuery eine API hinzu, damit Sie
id
s zum Abfragen vonWorkInfo
s verwenden können. (aosp/1412372, b/157335295) - Mit einem neuen Artefakt (
androidx.work:work-multiprocess:*
) unterstützt WorkManager Apps, die mehrere Prozesse verwenden, besser. Dieses neue Artefakt hilft, einige Probleme zu lösen, die bei großen Apps auftreten, darunter:- WorkManager muss in der Regel in jedem App-Prozess initialisiert werden. Das ist nicht optimal, da es zu mehr SQLite-Konflikten kommt, was wiederum zu anderen Problemen führt. WorkManager bietet jetzt neue APIs, mit denen Sie einen primären App-Prozess mit
Configuration#setDefaultProcessName(processName)
angeben können.processName
ist ein vollständig qualifizierter Prozessname, der wiepackageName:processName
aussieht (z.B.com.example:remote
). - Eine Reihe neuer APIs:
RemoteWorkManager
undRemoteWorkContinuation
bisenqueue
,cancel
undquery
-Arbeitsanfragen. Diese APIs enthalten keineLiveData
-Varianten, um SQLite-Konflikte zwischen mehreren Prozessen zu vermeiden. Alle Aufrufe vonenqueue
,cancel
undquery
werden mithilfe von AIDL an einenprimary
-App-Prozess weitergeleitet und geben eine fließendeListenableFuture
zurück. (aosp/1392657, aosp/1411210, aosp/1412215, aosp/1417713)
- WorkManager muss in der Regel in jedem App-Prozess initialisiert werden. Das ist nicht optimal, da es zu mehr SQLite-Konflikten kommt, was wiederum zu anderen Problemen führt. WorkManager bietet jetzt neue APIs, mit denen Sie einen primären App-Prozess mit
API-Änderungen
- WorkManager entfernt jetzt abgeschlossene
WorkRequest
s, die keine unvollständigen Abhängigkeiten haben, aggressiver. Die Pufferdauer wurde von7
Tagen auf1
Tage geändert. (aosp/1419708)
Fehlerkorrekturen
- WorkManager gleicht Jobs jetzt proaktiv ab, damit
WorkRequest
- undJobScheduler
-Jobs synchronisiert sind, wennWorkManager
initialisiert wird. (aosp/1412794, b/166292069)
Version 2.5.0-alpha01
19. August 2020
androidx.work:work-*:2.5.0-alpha01
wird veröffentlicht. Version 2.5.0-alpha01 enthält diese Commits.
Neue Funktionen
- Änderungen an internen APIs, die es uns ermöglichen, in Zukunft bessere Tools mit
WorkManager
bereitzustellen. Weitere Informationen folgen demnächst.
Fehlerkorrekturen
SecurityException
s beim Überwachen des Netzwerkstatus auf einigen Geräten verarbeiten (aosp/1396969)
Externer Beitrag
- Fehlerkorrektur in der Dokumentation für
ArrayCreatingInputMerger
von Zac Sweers (github/43).
Version 2.4.0
Version 2.4.0
22. Juli 2020
androidx.work:work-*:2.4.0
wird veröffentlicht. Version 2.4.0 enthält diese Commits.
Wichtige Änderungen seit Version 2.3.0
- Der In-Process-Scheduler von
WorkManager
ist jetzt leistungsfähiger. Bisher wurde bei der Ausführung vonScheduler
nur berücksichtigt, ob die Aufgaben nicht verzögert wurden und deren Einschränkungen erfüllt waren. Jetzt überwacht der In-Process-SchedulerWorkRequest
s, die in Zukunft ausgeführt werden könnten, einschließlich PeriodicWorkRequests. Für die In-Process-Scheduler
gelten ebenfalls keine Planungslimits. Sie ist jedoch auf die Größe derExecutor
beschränkt, die von WorkManager verwendet wird. Das bedeutet, dass die Anwendung jetzt viel mehr WorkRequests ausführen kann, wenn sie im Vordergrund ist. Zur Verwaltung der Ausführung verzögerter Aufgaben im Vordergrund wird inWorkManager
außerdem eine neue konfigurierbareRunnableScheduler
eingeführt. (aosp/1185778) - WorkManager unterstützt jetzt RxJava 3. Wenn Sie RxJava 3 verwenden möchten, sollten Sie die folgende Abhängigkeit angeben:
implementation "androidx.work:work-rxjava3:2.4.0"
. (aosp/1277904) - Es ist jetzt möglich, mithilfe eines
WorkQuery
nachWorkInfo
s zu suchen. Das ist nützlich, wenn EntwicklerWorkInfo
s anhand einer Kombination mehrerer Attribute abfragen möchten. Weitere Informationen finden Sie unterWorkQuery.Builder.fromStates(...)
,WorkQuery.Builder. fromTags(...)
oderWorkQuery.Builder.fromUniqueWorkNames(...)
. (aosp/1253230, b/143847546) Fügen Sie die Möglichkeit hinzu, Diagnoseinformationen von
WorkManager
anzufordern:adb shell am broadcast -a "androidx.work.diagnostics.REQUEST_DIAGNOSTICS" -p "<your_app_package_name>"
Sie enthält viele nützliche Informationen, darunter:
- Aufgabenanfragen, die in den letzten 24 Stunden abgeschlossen wurden.
- WorkRequests, die derzeit ausgeführt werden.
- Geplante Arbeitsanfragen (aosp/1235501)
Fügen Sie
ExistingWorkPolicy.APPEND_OR_REPLACE
hinzu. Dieser Befehl ähneltAPPEND
, ersetzt aber eine Kette, deren Voraussetzungen abgebrochen oder fehlgeschlagen sind. (b/134613984, aosp/1199640)Es soll möglich sein, eine benutzerdefinierte
RunnableScheduler
hinzuzufügen, um Arbeitsanfragen zu verfolgen, die in Zukunft ausgeführt werden müssen. Dieser wird vom In-Process-Scheduler verwendet. (aosp/1203944)Unterstützung für das dynamische Hinzufügen von Fabriken, an die delegiert werden soll, bei Verwendung einer
DelegatingWorkerFactory
hinzufügen. (b/156289105, aosp/1309745)Passen Sie das Tracking für
BATTERY_NOT_LOW
-Einschränkungen an die Plattform an. (aosp/1312583)Der In-Process-Scheduler verwendet jetzt bessere APIs, um den Namen des Prozesses zu ermitteln. Dies ist nützlich, um Apps mit mehreren Prozessen besser zu unterstützen. (aosp/1324732)
Neue Lint-Regeln, die Folgendes erzwingen:
- Verwendung der richtigen
foregroundServiceType
bei Verwendung vonsetForegroundAsync()
APIs (b/147873061, aosp/1215915) - JobScheduler-IDs angeben, die WorkManager verwenden soll, wenn JobService APIs direkt verwendet werden. aosp/1223567
- Es wurde eine neue Lint-Regel hinzugefügt, die dafür sorgt, dass
ListenableWorker
-Implementierungen jetztpublic
sind, wenn die Standard-WorkerFactory
verwendet wird. (aosp/1291262)
- Verwendung der richtigen
Aufrufe von
setForegroundAsync()
, die nicht vor Abschluss einerListenableWorker
abgeschlossen werden, werden jetzt über eineIllegalStateException
in der zurückgegebenenListenableFuture
signalisiert. (aosp/1262743)Ein Fehler wurde behoben, durch den die
ForegroundService
nicht angehalten wurde, nachdem eineWorker
im Vordergrund unterbrochen wurde. (b/155579898, aosp/1302153)Fehler behoben, bei dem
WorkManager
versucht, mehrere Instanzen einerWorker
auszuführen, die an einen Dienst im Vordergrund gebunden ist (b/156310133, aosp/1309853)
Version 2.4.0-rc01
24. Juni 2020
androidx.work:work-*:2.4.0-rc01
wird veröffentlicht. Version 2.4.0-rc01 enthält diese Commits.
Fehlerkorrekturen
- Der In-Process-Scheduler verwendet jetzt bessere APIs, um den Namen des Prozesses zu ermitteln. Dies ist nützlich, um Apps mit mehreren Prozessen besser zu unterstützen. (aosp/1324732)
Version 2.4.0-beta01
20. Mai 2020
androidx.work:work-gcm:2.4.0-beta01
, androidx.work:work-runtime:2.4.0-beta01
, androidx.work:work-runtime-ktx:2.4.0-beta01
, androidx.work:work-rxjava2:2.4.0-beta01
und androidx.work:work-testing:2.4.0-beta01
werden losgelassen. Version 2.4.0-beta01 enthält diese Commits.
Fehlerkorrekturen
- Ein Fehler wurde behoben, durch den die
ForegroundService
nicht angehalten wurde, nachdem eineWorker
im Vordergrund unterbrochen wurde. (b/155579898, aosp/1302153) - Fehler behoben, bei dem
WorkManager
versucht, mehrere Instanzen einerWorker
auszuführen, die an einen Dienst im Vordergrund gebunden ist (b/156310133, aosp/1309853) - Unterstützung für das dynamische Hinzufügen von Fabriken, an die delegiert werden soll, bei Verwendung einer
DelegatingWorkerFactory
hinzufügen. (b/156289105, aosp/1309745) - Passen Sie das Tracking für
BATTERY_NOT_LOW
-Einschränkungen an die Plattform an. (aosp/1312583)
Version 2.4.0-alpha03
29. April 2020
androidx.work:work-*:2.4.0-alpha03
wird veröffentlicht. Version 2.4.0-alpha03 enthält diese Commits.
Neue Funktionen
- WorkManager unterstützt jetzt RxJava 3. Wenn Sie RxJava 3 verwenden möchten, sollten Sie die folgende Abhängigkeit angeben:
implementation "androidx.work:work-rxjava3:2.4.0-alpha03"
. (aosp/1277904) - Es wurde eine neue Lint-Regel hinzugefügt, die dafür sorgt, dass
ListenableWorker
-Implementierungen jetztpublic
sind, wenn die Standard-WorkerFactory
verwendet wird. (aosp/1291262)
API-Änderungen
- Wenn
setProgressAsync()
nach Abschluss der Ausführung einerListenableWorker
aufgerufen wird, wird jetzt über dieListenableFuture
eineException
signalisiert. (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
- Ignorieren Sie
SecurityException
s beim Überwachen des Netzwerkstatus eines Geräts. (b/153246136, aosp/1280813)
Version 2.4.0-alpha02
1. April 2020
androidx.work:work-*:2.4.0-alpha02
wird veröffentlicht. Version 2.4.0-alpha02 enthält diese Commits.
Neue Funktionen
- Es wurde eine neue Lint-Regel hinzugefügt, die warnt, wenn für
WorkRequest
sowohlConstraints.setRequiresCharging(...)
als auchConstraints.setRequiresDeviceIdle(...)
erforderlich sind. Einige Geräte werden nie gleichzeitig geladen und inaktiv genutzt. Solche Anfragen werden also weniger häufig ausgeführt als erwartet. (aosp/1253840)
API-Änderungen
Es ist jetzt möglich, mithilfe eines
WorkQuery
nachWorkInfo
s zu suchen. Das ist nützlich, wenn EntwicklerWorkInfo
s anhand einer Kombination mehrerer Attribute abfragen möchten. Weitere Informationen finden Sie unterWorkQuery.Builder withStates(...)
,WorkQuery.Builder withTags(...)
oderWorkQuery.Builder withUniqueWorkNames(...)
. (aosp/1253230, b/143847546)Aufrufe von
setForegroundAsync()
, die nicht vor Abschluss einerListenableWorker
abgeschlossen werden, werden jetzt über eineIllegalStateException
in der zurückgegebenenListenableFuture
signalisiert. (aosp/1262743)
Fehlerkorrekturen
- Die Lint-Regel, die nach ungültigen Intervalldauern für
PeriodicWorkRequest
s sucht, wurde korrigiert. (aosp/1254846, b/152606442)
Version 2.4.0-alpha01
4. März 2020
androidx.work:work-*:2.4.0-alpha01
wird veröffentlicht. Version 2.4.0-alpha01 enthält diese Commits.
Neue Funktionen
Der In-Process-Scheduler von
WorkManager
ist jetzt leistungsfähiger. Bisher berücksichtigte der In-Process-Scheduler nur die Ausführung von Aufgaben, die nicht verzögert wurden und deren Einschränkungen erfüllt waren. Jetzt überwacht der In-Process-SchedulerWorkRequest
s, die in Zukunft ausgeführt werden könnten, einschließlichPeriodicWorkRequest
s. Der In-Process-Scheduler hält auch Planungslimits nicht ein, ist aber auf die Größe des von WorkManager verwendetenExecutor
beschränkt. Das bedeutet, dass die Anwendung jetzt viel mehrWorkRequest
s ausführen kann, wenn sie im Vordergrund ist. (aosp/1185778)Es ist jetzt möglich, mit
adb shell am broadcast -a "androidx.work.diagnostics.REQUEST_DIAGNOSTICS" -p "<your_app_package_name>"
Diagnoseinformationen von WorkManager anzufordern. Sie enthält viele nützliche Informationen, darunter:- Aufgabenanfragen, die in den letzten 24 Stunden abgeschlossen wurden.
- WorkRequests, die derzeit ausgeführt werden.
- Geplante Arbeitsanfragen (aosp/1235501)
Neue Lint-Regeln, die Folgendes erzwingen:
- Verwendung der richtigen
foregroundServiceType
bei Verwendung vonsetForegroundAsync()
APIs (b/147873061, aosp/1215915) JobScheduler
-IDs angeben, dieWorkManager
verwenden sollte, wennJobService
APIs direkt verwendet werden. (aosp/1223567)
- Verwendung der richtigen
API-Änderungen
Fügen Sie
ExistingWorkPolicy.APPEND_OR_REPLACE
hinzu. Dieser Befehl ähneltAPPEND
, ersetzt aber eine Kette, für die die Voraussetzungen nicht erfüllt sind oder die abgebrochen wurde. (b/134613984, aosp/1199640)Es sollte möglich sein, eine benutzerdefinierte
RunnableScheduler
hinzuzufügen, umWorkRequest
s zu erfassen, die in Zukunft ausgeführt werden müssen. Dieser wird vom In-Process-Scheduler verwendet. (aosp/1203944)
Fehlerkorrekturen
setProgress()
inRxWorker
wurde eingestellt, da zuvor einSingle<Void>
zurückgegeben wurde, was ein unmöglicher Typ ist. Es wurde eine neue APIsetCompletableProgress()
hinzugefügt, die stattdessen eineCompletable
zurückgibt. Außerdem wurden 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
wird veröffentlicht. Version 2.3.4 enthält diese Commits.
Fehlerkorrekturen
- Ein Fehler wurde behoben, durch den nach Ablauf des 10-Minuten-Ausführungszeitraums mehrere Instanzen eines lang laufenden
Worker
ausgeführt wurden. (aosp/1247484, b/150553353) - Behebung eines Problems mit dem Lint-
IssueRegistry
von WorkManager. Vielen Dank an @ZacSweers von Slack für den Beitrag. (aosp/1217923)
Version 2.3.3
Version 2.3.3
4. März 2020
androidx.work:work-*:2.3.3
wird veröffentlicht. Version 2.3.3 enthält diese Commits.
Fehlerkorrekturen
- Ein Fehler wurde behoben, bei dem eine
Worker
nach einer Unterbrechung nicht richtig neu geplant wurde. (b/150325687, aosp/1246571)
Version 2.3.2
Version 2.3.2
19. Februar 2020
androidx.work:work-*:2.3.2
werden veröffentlicht. Version 2.3.2 enthält diese Commits.
Fehlerkorrekturen
- Behoben wurde ein Problem, bei dem WorkManager in seltenen Fällen das Limit von 100 Jobs im JobScheduler überschreitet. (aosp/1226859, b/149092520)
- Behebung einer Race-Bedingung in ConstraintControllers. (aosp/1220100)
- Der Dienstlebenszyklus im Vordergrund wurde für langlaufende Worker verbessert. (aosp/1226295)
- Die Verwaltung der Stornierung von Benachrichtigungen für langlaufende Worker bei der Stornierung des Workers wurde verbessert. (aosp/1228346)
Version 2.3.1
Version 2.3.1
5. Februar 2020
androidx.work:work-*:2.3.1
wird veröffentlicht. Version 2.3.1 enthält diese Commits.
Fehlerkorrekturen
- Bessere Verwaltung des Lebenszyklus von
Notification
für langlaufendeWorker
, die ausgeführt werden, wenn eineService
im Vordergrund aktiv ist. (aosp/1218539, b/147249312) WorkManager
hängt jetzt vonandroidx.sqlite:sqlite-framework:2.1.0
stable ab. (aosp/1217729)- Es wurden Lint-Regeln hinzugefügt, damit bei Verwendung von
foregroundServiceType
s inForegroundInfo
in derAndroidManifest.xml
einforegroundServiceType
angegeben wird. (aosp/1214207, b/147873061)
Version 2.3.0
Version 2.3.0
22. Januar 2020
androidx.work:work-*:2.3.0
wird seit 2.3.0-rc01
unverändert veröffentlicht. Version 2.3.0 enthält diese Commits.
Wichtige Änderungen seit Version 2.2.0
- Unterstützung für lang laufende oder wichtige Aufgaben über
ListenableWorker#setForegroundAsync()
- Unterstützung für den Worker-Fortschritt über
ListenableWorker#setProgressAsync()
. - WorkManager enthält jetzt zusätzliche Lint-Regeln, die dazu beitragen, Fehler frühzeitig zu erkennen.
Version 2.3.0-rc01
8. Januar 2020
androidx.work:work-*:2.3.0-rc01
wird veröffentlicht. Version 2.3.0-rc01 enthält diese Commits.
Dieser Release ist mit 2.3.0-beta02
identisch.
Fehlerkorrekturen
- Das
work-testing
-Artefakt definiert jetzt eineapi
-Abhängigkeit vonwork-runtime-ktx
. (aosp/1194410)
Version 2.3.0-beta02
18. Dezember 2019
androidx.work:work-*:2.3.0-beta02
wird veröffentlicht. Version 2.3.0-beta02 enthält diese Commits.
Neue Funktionen
- Bessere Fehlermeldung für nicht wiederherstellbare SQLite-Ausnahmen hinzugefügt. (aosp/1185777)
- Es wurde eine Lint-Regel hinzugefügt, die dafür sorgt, dass der Inhaltsanbieter
androidx.work.impl.WorkManagerInitializer
bei der On-Demand-Initialisierung aus derAndroidManifest.xml
entfernt wird. (aosp/1167007) - Es wird jetzt eine Lint-Warnung ausgegeben, wenn
enqueue()
anstelle vonenqueueUniquePeriodicWork()
für einePeriodicWorkRequest
verwendet wird. (aosp/1166032)
API-Änderungen
- Bei
ForegroundInfo
müssen Sie jetzt dennotificationId
angeben, der bei der Verwendung vonListenableWorker.setForegroundAsync()
verwendet werden soll. Dies ist eine funktionsgefährdende Änderung. So können Sie mehrere lang laufendeWorker
s parallel ausführen.WorkManager
verwaltet auch die Lebensdauer der bereitgestelltenNotification
s besser. (b/145473554, aosp/1181208, asop/1181216, asop/1183577)
Fehlerkorrekturen
- Ein Fehler in der AlarmManager-Implementierung wurde behoben, bei dem Wecker nicht richtig bereinigt wurden. (aosp/1156444)
- Ein Fehler wurde behoben, durch den bei einer leeren Liste von
WorkRequest
s eine falscheWorkContinuation
-Kette erstellt wurde. (b/142835274, aosp/1157051)
Änderungen an Abhängigkeiten
- Für WorkManager wird jetzt Room 2.2.2 verwendet.
Version 2.3.0-beta01
20. November 2019
androidx.work:work-*:2.3.0-beta01
wird veröffentlicht. Version 2.3.0-beta01 enthält diese Commits.
Neue Funktionen
- Es wurde eine neue Lint-Regel hinzugefügt, die Entwicklerfehler aufgrund einer falschen Implementierung von
androidx.work.Configuration.Provider
bei der On-Demand-Initialisierung verhindert. aosp/1164559
Version 2.3.0-alpha03
23. Oktober 2019
androidx.work:work-*:2.3.0-alpha03
wird veröffentlicht. Version 2.3.0-alpha03 enthält diese Commits.
Neue Funktionen
- Die
WorkManager.createCancelPendingIntent()
API wurde hinzugefügt, mit derWorkRequest
s ganz einfach storniert werden können, ohne dass eine weitere Komponente in derAndroidManifest.xml
registriert werden muss. Mit dieser API könnenWorkRequest
s besonders einfach überNotification
s storniert werden. Wir gehen davon aus, dass dies in Version 2.3.0 mit den neuen APIs für den Vordergrund kombiniert wird. - WorkManager hängt jetzt von
androidx.room:*:2.2.0
stable ab.
API-Änderungen
ForegroundInfo.getNotificationType()
inForegroundInfo.getForegroundServiceType()
umbenannt, um für mehr Einheitlichkeit mit den zugrunde liegenden Plattform-APIs zu sorgen. (b/142729893, aosp/1143316)
Fehlerkorrekturen
- Es wurde ein Fehler behoben, der durch einen unnötigen Aufruf von
setTransactionSuccessful()
außerhalb einer Transaktion verursacht wurde. Das kommt bei seltenen Migrationen vor. (b/142580433, aosp/1141737)
Version 2.3.0-alpha02
9. Oktober 2019
androidx.work:work-*:2.3.0-alpha02
wird veröffentlicht. Version 2.3.0-alpha02 enthält diese Commits.
Neue Funktionen
- WorkManager unterstützt jetzt die Ausführung lang laufender oder wichtiger Aufgaben, die vom Betriebssystem beibehalten 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 plant Aufgaben fair, wenn die Anzahl der in der Warteschlange befindlichen
WorkRequest
die Planungslimits erreicht. (aosp/1105766) - WorkManager ruft
ListenableWorker#onStopped()
nur dann auf, wenn die Arbeit noch nicht abgeschlossen ist. (b/140055777) - WorkManager entfernt jetzt Fortschrittsinformationen, wenn ein Worker unterbrochen wird oder seinen Endstatus erreicht. (aosp/1114572)
Data
hat jetzt eine viel nützlicheretoString()
Darstellung. (b/140945323)Data
hat jetzt eine bessereequals()
-Methode. Außerdem wirddeepEquals
fürArray
-Typen unterstützt. (b/140922528)- WorkManager speichert seine interne Datenbank und seine Einstellungsdateien jetzt in einem Verzeichnis ohne Sicherung. (b/114808216)
Version 2.3.0-alpha01
22. August 2019
androidx.work:work-*:2.3.September 5, 20190-alpha01
wird veröffentlicht. Die in dieser Version enthaltenen Commits finden Sie hier.
Neue Funktionen
ListenableWorker
s können den Fortschritt jetzt über diesetProgressAsync()
API festlegen. Außerdem wurde inCoroutineWorker
eine entsprechendesuspend
-ingsetProgress
API und inRxWorker
einesetProgress
hinzugefügt, die eineSingle<Void>
zurückgibt. Mit diesen neuen APIs können Arbeiter Fortschrittsinformationen überWorkInfo
senden, das eine entsprechendegetProgress
API hat. (b/79481554)Data
hat einecontainsKey()
API, mit der überprüft werden kann, ob die Eingabedaten fürWorker
Schlüssel mit dem erwarteten Typ haben. (b/117136838)Data
kann jetzt mitData.toByteArray()
undData.fromByteArray()
serialisiert werden. Hinweis: FürData
gibt es keine Versionsgarantien. Sie sollten sie daher nicht speichern oder für die interprozedurale Kommunikation zwischen Anwendungen verwenden. Sie können nur zwischen mehreren Prozessen der gleichen Anwendung verwendet werden.- Es ist jetzt möglich, eine
InputMergerFactory
überConfiguration.setInputMergerFactory
anzugeben. (b/133273159)
API-Änderungen
- WorkManager wirft eine Instanz von
IllegalStateException
, wenn eineWorkerFactory
eine Instanz vonListenableWorker
zurückgibt, die bereits zuvor aufgerufen wurde. (b/139554406) - Aktualisierungen der Dokumentation zur
ListenableFuture
-Stornierung und zumonStopped()
-Callback inListenableWorker
. (b/138413671)
Fehlerkorrekturen
- Der In-Process-Scheduler ignoriert jetzt
WorkRequest
s mit der Einschränkungidle
. Diese Anfragen werden jetzt nur vonJobScheduler
verarbeitet, wenn das Gerät tatsächlichidle
ist. (aosp/1089779) TestScheduler
verwendet jetzt in Tests die angegebeneExecutor
für den internen Task-Ausführer. (aosp/1090749)
Version 2.2.0
Version 2.2.0
15. August 2019
androidx.work:work-*:2.2.0
wird veröffentlicht. Die in dieser Version enthaltenen Commits finden Sie hier.
Dieser Release ist mit androidx.work:work-*:2.2.0-rc01
identisch.
Wichtige Änderungen in Version 2.2.0 im Vergleich zu Version 2.1.0
androidx.work:work-gcm:2.2.0
ist ein neues Maven-Artefakt, das die Verwendung von GCMNetworkManager als Scheduler unterstützt, wenn Google Play-Dienste für API-Ebenen <= 22 verfügbar sind. Dies ist eine optionale Abhängigkeit, die zu einer zuverlässigeren und leistungsstärkeren Hintergrundverarbeitung bei älteren API-Versionen beiträgt. Wenn Ihre App Google Play-Dienste verwendet, fügen Sie Ihrer Gradle-Datei diese Abhängigkeit hinzu, um automatisch GCMNetworkManager-Unterstützung zu erhalten. Wenn die Play-Dienste nicht verfügbar sind, greift WorkManager auf älteren Geräten weiterhin auf AlarmManager zurück.
Version 2.2.0-rc01
30. Juli 2019
androidx.work:work-*:2.2.0-rc01
wird veröffentlicht. Die in dieser Version enthaltenen Commits finden Sie hier.
Fehlerkorrekturen
- Ein Fehler in der AlarmManager-Implementierung wurde behoben, der dazu führte, dass der Dienst vorzeitig heruntergefahren wurde und in seltenen Fällen zu einer
RejectedExecutionException
führte. (aosp/1092374) (b/138238197). - Es wurde eine Problemumgehung für ein
NullPointerException
bei der Verwendung vonJobScheduler
APIs auf einigen Geräten hinzugefügt. (aosp/1091020) (b/138364061), (b/138441699)
Version 2.2.0-beta02
19. Juli 2019
androidx.work:work-*:2.2.0-beta02
wird veröffentlicht. Die in dieser Version enthaltenen Commits finden Sie hier.
Fehlerkorrekturen
- Die unbeabsichtigte Jacoco-Abhängigkeit, die in
2.2.0-beta01
eingeführt wurde, wurde entfernt.
Version 2.2.0-beta01
17. Juli 2019
androidx.work:work-*:2.2.0-beta01
wird veröffentlicht. Die in dieser Version enthaltenen Commits finden Sie hier.
Neue Funktionen
androidx.work:work-gcm:2.2.0-beta01
ist ein neues Maven-Artefakt, das die Verwendung von GCMNetworkManager als Scheduler unterstützt, wenn Google Play-Dienste für API-Ebenen <= 22 verfügbar sind. Dies ist eine optionale Abhängigkeit, die zu einer zuverlässigeren und leistungsstärkeren Hintergrundverarbeitung bei älteren API-Versionen beiträgt. Wenn Ihre App Google Play-Dienste verwendet, fügen Sie Ihrer Gradle-Datei diese Abhängigkeit hinzu, um automatisch GCMNetworkManager-Unterstützung zu erhalten. Wenn die Play-Dienste nicht verfügbar sind, greift WorkManager auf älteren Geräten weiterhin auf AlarmManager zurück.
Fehlerkorrekturen
- Fehlerbehebung für
IllegalArgumentException
beim Überwachen des Netzwerkstatus auf Nvidia Shield K1-Tablets. (aosp/1010188)
Version 2.1.0
Version 2.1.0
11. Juli 2019
androidx.work:work-*:2.1.0
wird veröffentlicht. Dieser Release ist mit androidx.work:work-*:2.1.0-rc01
identisch.
Wichtige Änderungen seit Version 2.0.1
- Für
work-runtime-ktx
ist jetzt Java 8 erforderlich. Wenn Probleme auftreten, können Sie Ihrembuild.gradle
Folgendes hinzufügen:kotlinOptions { jvmTarget = "1.8" }
- Es wurde eine On-Demand-Initialisierung für WorkManager hinzugefügt, bei der WorkManager nur bei einer Referenz erstellt 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. - Ändern Sie alle Verweise auf
WorkManager.getInstance()
inWorkManager.getInstance(Context)
. Im Rahmen dieser Änderung wurdeWorkManager.getInstance()
eingestellt. Es ist immer sicherer, den neuenWorkManager.getInstance(Context)
-Ersatz aufzurufen, auch wenn Sie die Initialisierung nicht bei Bedarf ausführen.
PeriodicWorkRequest
s unterstützen jetzt anfängliche Verzögerungen. Mit der MethodesetInitialDelay
vonPeriodicWorkRequest.Builder
können Sie eine anfängliche Verzögerung festlegen. b/111404867- Es ist jetzt möglich, mit
DelegatingWorkerFactory
eine oder mehrere registrierteWorkerFactory
zu delegieren. b/131435993 - Es ist jetzt möglich, die
Executor
zu personalisieren, die von WorkManager für die gesamte interne Buchhaltung überConfiguration.Builder.setTaskExecutor
verwendet wird. - Es ist jetzt möglich,
Worker
- undListenableWorker
-Klassen zu erstellen, die sich mithilfe vonTestWorkerBuilder
undTestListenableWorkerBuilder
imwork-testing
-Artefakt für Unit-Tests verwenden lassen.- Hinweis:
work-testing
ruft jetzt Kotlin als Abhängigkeit ab und enthält standardmäßig mehrere Kotlin-Erweiterungen.
- Hinweis:
- Die Anzahl der Ausführungsversuche wurde
WorkInfo
hinzugefügt. b/127290461 - Mit
Data
-Typen können jetzt Bytes und Byte-Arrays gespeichert und abgerufen werden. Die maximale Größe vonData
-Objekten ändert sich dadurch NICHT. - WorkManager hängt jetzt von
Room 2.1.0
ab, wodurch einige Datenbankprobleme behoben werden sollten.
Version 2.1.0-rc01
27. Juni 2019
androidx.work:work-*:2.1.0-rc01
wird veröffentlicht. Die in dieser Version enthaltenen Commits finden Sie hier.
Fehlerkorrekturen
- Ein Fehler wurde behoben, der dazu führte, dass eine Anwendung abstürzte, wenn Jobs mit
JobScheduler
ausgeführt wurden, während eine Sicherung in Bearbeitung war b/135858602.
Version 2.1.0-beta02
20. Juni 2019
androidx.work:work-*:2.1.0-beta02
wird veröffentlicht. Die in dieser Version enthaltenen Commits finden Sie hier.
Fehlerkorrekturen
TestListenableWorkerBuilder
verwendet jetzt den richtigenWorkerFactory
beim Erstellen von Instanzen vonListenableWorker
. b/135275844- Ein Fehler wurde behoben, der zu Abweichungen bei den Ausführungsfenstern für
WorkRequest
s aufgrund von Prozessende führte. b/135272196
Version 2.1.0-beta01
13. Juni 2019
androidx.work:work-*:2.1.0-beta01
wird veröffentlicht. Die in dieser Version enthaltenen Commits finden Sie hier.
Fehlerkorrekturen
- WorkManager hängt jetzt von
Room 2.1.0
ab, wodurch einige Datenbankprobleme behoben werden sollten. - Einige Laufwerk-E/A-Vorgänge beim Starten im Hauptthread wurden entfernt.
- Behebung einer potenziellen Blockade beim Tracking von Einschränkungen. b/134361006
- Ungültige Jobs, die WorkManager zugeordnet waren, wurden vorzeitig abgebrochen. b/134058261
- Es wurden einige defensive Aufrufe an JobScheduler APIs für Geräte mit Fehlverhalten hinzugefügt.
Version 2.1.0-alpha03
5. Juni 2019
androidx.work:*:2.1.0-alpha03
wird veröffentlicht.
Fehlerkorrekturen
- Verbesserte Dokumentation für
PeriodicWorkRequest
s. WorkManagerTestInitHelper
verwendet jetzt den richtigen Hintergrundausführer für Tests.- Behebung von SQLite-Problemen beim Umgang mit großen Transaktionen auf einigen Geräten (b/130182503)
- Die Abhängigkeiten von WorkManager sind jetzt detaillierter. (b/133169148).
- Umgehung von OEM-spezifischen Fehlern bei der Implementierung von
JobScheduler
beim Planen von Jobs mit WorkManager. - Verbesserungen am AlarmManager-basierten Scheduler für Dienstlebensdauern, die zuvor selten zu Abstürzen geführt haben. (b/133313734)
Version 2.1.0-alpha02
16. Mai 2019
WorkManager 2.1.0-alpha02 ist verfügbar. Diese Version enthält mehrere neue APIs.
API-Änderungen
PeriodicWorkRequest
s unterstützen jetzt anfängliche Verzögerungen. Mit der MethodesetInitialDelay
vonPeriodicWorkRequest.Builder
können Sie eine anfängliche Verzögerung festlegen. b/111404867Es ist jetzt möglich, mit
DelegatingWorkerFactory
eine oder mehrere registrierteWorkerFactory
zu delegieren. b/131435993Es ist jetzt möglich, die
Executor
zu personalisieren, die von WorkManager für die gesamte interne Buchhaltung überConfiguration.Builder.setTaskExecutor
verwendet wird.Die Dokumentation zu
WorkRequest.keepResultsForAtLeast
(b/130638001), der On-Demand-Initialisierung undPeriodicWorkRequest.Builder
(b/131711394) wurde verbessert.
Version 2.1.0-alpha01
24. April 2019
WorkManager 2.1.0-alpha01 ist veröffentlicht. Diese Version enthält mehrere neue APIs. Ab dieser Version gibt es neue Funktionen, die nicht in die 1.x-Version zurückportiert werden. Wir empfehlen, auf 2.x umzustellen.
API-Änderungen
- On-Demand-Initialisierung für WorkManager hinzugefügt, die WorkManager nur bei Verweis erstellt. 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. - Ändern Sie alle Verweise auf
WorkManager.getInstance()
inWorkManager.getInstance(Context)
. Im Rahmen dieser Änderung wurdeWorkManager.getInstance()
eingestellt. Es ist immer sicherer, den neuenWorkManager.getInstance(Context)
-Ersatz aufzurufen, auch wenn Sie die Initialisierung nicht bei Bedarf ausführen.
- Es ist jetzt möglich,
Worker
- undListenableWorker
-Klassen zu erstellen, die sich mithilfe vonTestWorkerBuilder
undTestListenableWorkerBuilder
imwork-testing
-Artefakt für Unit-Tests verwenden lassen.work-testing
ruft jetzt Kotlin als Abhängigkeit ab, enthält aber standardmäßig auch mehrere Kotlin-Erweiterungen.
- Die Anzahl der Ausführungsversuche wurde
WorkInfo
hinzugefügt. b/127290461 - Mit
Data
-Typen können jetzt Bytes und Byte-Arrays gespeichert und abgerufen werden. Die maximale Größe vonData
-Objekten ändert sich dadurch NICHT. CoroutineWorker.coroutineContext
wurde eingestellt. Dieses Feld wurde fälschlicherweise alsCoroutineDispatcher
eingegeben. Sie sollten es nicht mehr benötigen, da Sie im Body der suspendierenden Funktion selbst zum gewünschten coroutineContext wechseln können.RxWorker.createWork()
undRxWorker.getBackgroundScheduler()
sind jetzt mit@NonNull
-Rückgabetypen annotiert.
Version 2.0.1
Version 2.0.1
9. April 2019
WorkManager 2.0.1 ist verfügbar. Dieser Release ist mit 2.0.1-rc01 identisch.
Version 2.0.1-rc01
3. April 2019
WorkManager 2.0.1-rc01 ist veröffentlicht. Diese Version enthält einige Fehlerkorrekturen. Für Nutzer der alten Version 1.x sind einige dieser Änderungen auch in 1.0.1-rc01 zu sehen.
Fehlerkorrekturen
- Robolectric-Tests funktionieren jetzt richtig mit WorkManager. b/122553577
- Ein Absturz bei Grenzfällen wurde behoben, bei dem die Einschränkungen bei APIs vor JobScheduler nicht beseitigt wurden. b/129226383
- Ein
StackOverflowError
-Problem bei langen Arbeitsabfolgen wurde behoben. b/129091233 - Die Dokumentation für
PeriodicWorkRequest
s wurde aktualisiert, um anzugeben, dass flexible Arbeitszeiten in API 23 nicht unterstützt werden. - Einige fehlerhafte Links in der Kotlin-Dokumentation wurden korrigiert.
Version 2.0.0
Version 2.0.0
20. März 2019
WorkManager 2.0.0 ist verfügbar. Diese Version ist mit 2.0.0-rc01 identisch und ist die AndroidX-Version von 1.0.0 Stable mit AndroidX-Abhängigkeiten. Wir empfehlen, Ihre Anzeigen auf diese Version auszurichten und nicht auf die älteren 1.x-Versionen. Die gesamte aktive Entwicklung wird auf 2.x ausgerichtet und 1.x erhält nur für begrenzte Zeit kritische Fehlerkorrekturen.
Version 2.0.0-rc01
7. März 2019
WorkManager 2.0.0-rc01 ist veröffentlicht. Diese Version ist mit der stabilen Version 1.0.0 identisch, hat aber AndroidX-Abhängigkeiten. Sobald die Version 2.0.0 stabil ist, sollten Sie diese Version verwenden. Die älteren Versionen 1.x erhalten nur einige kritische Fehlerkorrekturen. Alle aktiven Entwicklungen sind auf 2.x ausgerichtet.
Abhängigkeiten vor AndroidX
Referenzdokumente: Java
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" }
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. Dieser Release ist mit 1.0.1-rc01 identisch.
Wir empfehlen Nutzern dringend, auf WorkManager 2.x umzustellen, da es in Zukunft nur noch sehr wenige Updates für den 1.x-Zweig geben wird. Es werden auch keine neuen APIs für die 1.x-Bibliothek veröffentlicht.
Version 1.0.1-rc01
2. April 2019
WorkManager 1.0.1-rc01 ist veröffentlicht. Diese Version enthält einige Fehlerkorrekturen.
Fehlerkorrekturen
- Robolectric-Tests funktionieren jetzt richtig mit WorkManager. b/122553577
- Ein Absturz bei Grenzfällen wurde behoben, bei dem die Einschränkungen bei APIs vor JobScheduler nicht beseitigt wurden. b/129226383
- Ein
StackOverflowError
-Problem bei langen Arbeitsabfolgen 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 mit 1.0.0-rc02 identisch.
Version 1.0.0-rc02
21. Februar 2019
Dies ist der zweite Release-Kandidat für die stabile Version 1.0.0 von WorkManager. Diese Version enthält zwei Fehlerkorrekturen.
Fehlerkorrekturen
Worker
s werden jetzt nach einem Absturz der Anwendung korrekt geplant. b/124546316Worker
s, die eine nicht angeklickteException
zurückgeben, werden jetzt korrekt alsFAILED
gekennzeichnet und führen nicht mehr zum Absturz des App-Prozesses.
Version 1.0.0-rc01
14. Februar 2019
Dies ist ein Release-Kandidat für die stabile Version 1.0.0 von WorkManager. Diese Version enthält eine Fehlerkorrektur.
Fehlerkorrekturen
- Die AlarmManager-basierte Implementierung berücksichtigt jetzt korrekt
flex
-Zeitfenster 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 - Ein
NullPointerException
auf Geräten mit Android 5.1 (API-Level 22) oder niedriger wurde behoben. b/123835104
Version 1.0.0-beta04
4. Februar 2019
Diese Version enthält einige Fehlerkorrekturen.
Fehlerkorrekturen
- Verbesserte Planung von „PeriodicWork“ für die AlarmManager-basierte Implementierung.
- Ein Fall wurde behoben, bei dem WorkManager bei Verwendung der AlarmManager-basierten Implementierung Einschränkungen nicht richtig erfasst hat. b/123379508
- Es wurde ein Fall behoben, in dem WorkManager bei Verwendung der AlarmManager-basierten Implementierung den Vorgang nach dem Absterben des Prozesses nicht noch einmal ausgeführt hat. b/123329850
- Ein Fall wurde behoben, bei dem WorkManager bei Verwendung der AlarmManager-basierten Implementierung Wakelocks leckte.
Version 1.0.0-beta03
25. Januar 2019
Diese Version enthält einige Fehlerkorrekturen.
Fehlerkorrekturen
- Wir haben eine Regression
1.0.0-beta02
eingeführt, die dazu führte, dass Aufgaben in einigen Fällen nicht richtig ausgeführt wurden. b/123211993 - Ein Fall wurde behoben, bei dem das Backoff-Timing bei einer Aufgabe nicht richtig berücksichtigt wurde. b/122881597
- Ein
ConcurrentModificationException
wurde auf Geräten mit Android 5.1 (API 22) oder niedriger behoben. Dies ist eine Fortsetzung der Korrektur in1.0.0-beta02
. b/121345393 - Wir haben
exported=false
für einige Komponenten in unserem Manifest hinzugefügt, für die diese Anmerkung fehlte. - Informationen dazu, wie WorkManager mit dem Betriebssystem interagiert, wurden in die Dokumentation auf Paketebene aufgenommen.
Version 1.0.0-beta02
15. Januar 2019
Diese Version enthält einige Fehlerkorrekturen.
Fehlerkorrekturen
- Es wurde ein Grenzfall behoben, bei dem auf Geräten mit Android 6.0 (API-Level 23) periodische Aufgaben mehrmals pro Intervall ausgeführt werden konnten. b/121998363
- Ein
ConcurrentModificationException
auf Geräten mit Android 5.1 (API-Level 22) oder niedriger wurde behoben. b/121345393 - Fehlerhafte Ausführung von Aufgaben bei nicht erfüllten Einschränkungen auf Geräten mit Android 5.1 (API-Level 22) oder niedriger behoben. b/122578012
- Die Verarbeitung der Aufgabenerledigung wurde optimiert, um in einigen Grenzfällen schneller zu sein. b/122358129
- Es wurde eine Änderung hinzugefügt, um potenzielle Race-Bedingungen zwischen mehreren Instanzen von
LiveData
zu beheben, die von WorkManager verwendet werden. - Die
Room
-Abhängigkeit1.1.1
wird jetzt anstelle von1.1.1-rc01
verwendet. Diese Versionen sind identisch. b/122578011
Version 1.0.0-beta01
19. Dezember 2018
Diese Version enthält keine API-Änderungen. In Zukunft wird die WorkManager API voraussichtlich bis zur nächsten Version stabil bleiben, sofern kein kritisches Problem auftritt. Diese Version enthält einige Fehlerkorrekturen.
Fehlerkorrekturen
- Bisher abgebrochene untergeordnete Elemente von abgeschlossenen übergeordneten Elementen werden nicht mehr ausgeführt. b/120811767
- Korrekt initialisierte Logging-Klassen (wird hauptsächlich bei Tests festgestellt)
Version 1.0.0-alpha13
12. Dezember 2018
Dieser Release enthält eine geringfügige API-Änderung, die für einige Kotlin-Nutzer hilfreich sein wird.
API-Änderungen
androidx.work.Result
wurde zu einer inneren Klasse vonListenableWorker
verschoben. Dadurch werden Konflikte beim Refactoring mit derResult
-Klasse der obersten Ebene in Kotlin verhindert. Das ist eine API-Änderung, die die Abwärtskompatibilität aufhebt. b/120564418
Bruchstellenfreie 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 funktionsgefährdenden API-Änderungen. Weitere Informationen finden Sie unten im Abschnitt Funktionsgefährdenden API-Änderungen. Diese Version wird wahrscheinlich als erste Betaversion veröffentlicht. alpha12
enthält außerdem umfangreiche Aktualisierungen der Dokumentation.
API-Änderungen
- Mit dem neuen Artefakt
work-rxjava2
wirdRxWorker
eingeführt. Dies ist einListenableWorker
, für das einSingle<Payload>
erwartet wird. - Der Support für Firebase JobDispatcher wurde entfernt, da die Funktion bald eingestellt wird. Das bedeutet, dass das
work-firebase
-Artefakt in der Betaphase nicht mehr aktualisiert wird. Wir werden in Zukunft eine Alternative hinzufügen. Payload
mitResult
zusammengeführtResult
ist jetzt eine „versiegelte Klasse“ mit drei konkreten Implementierungen, die Sie überResult.success()
(oderResult.success(Data)
),Result.failure()
(oderResult.failure(Data)
) undResult.retry()
abrufen können. IhreListenableFuture
ergeben jetztResult
stattPayload
.Worker
s haben keine Getter- und Setter-Methoden für die AusgabeData
. Dies ist eine funktionsgefährdende Änderung.Constraints.Builder.setTriggerContentMaxDelay(long, TimeUnit)
undConstraints.Builder.setTriggerContentUpdateDelay(long, TimeUnit)
sowie Varianten wurden hinzugefügt, um langsam ausgelöste Content-URIs besser zu unterstützen. b/119919774- Variante
WorkRequest.Builder.setBackoffCriteria(BackoffPolicy, Duration)
hinzugefügt. Für diese Methode ist API 26 erforderlich. - Kotlin-Erweiterungsmethoden
Operation.await()
undListenableFuture.await()
hinzugefügt. Operation.getException()
wurde inOperation.getThrowable()
umbenannt. Dies ist eine funktionsgefährdende Änderung.- Die Klasse
ContentUriTriggers
und die Methoden, die darauf verweisen, sind nicht mehr öffentlich verfügbar. Dies ist eine funktionsgefährdende Änderung. - Die restlichen Methoden mit variabler Argumentanzahl in
WorkManager
,WorkContinuation
undOneTimeWorkRequest
wurden entfernt, um die API zu optimieren. Um Build-Probleme zu beheben, können Sie Ihre vorhandenen Variablenargumente inArrays.asList(...)
einschließen. Die Versionen mit einem Argument sind aber weiterhin verfügbar. Dies ist eine funktionsgefährdende Änderung. WorkContinuation.combine(OneTimeWorkRequest, *)
Varianten wurden entfernt. Die API war verwirrend. Die vorhandenencombine
-Methoden sind verständlicher. Dies ist eine funktionsgefährdende Änderung.
Fehlerkorrekturen
- Implementierungen vor Marshmallow können jetzt zuverlässiger nach dem Absturz eines Prozesses einer bereits ausgeführten Aufgabe wiederhergestellt werden.
LiveData
, die überobserveForever
erfasst wird, wird über WorkManager erfasst. Dies ist ein Backport einer Korrektur für die Room-Bibliothek. b/74477406Data.Builder.build()
löst jetzt eine Ausnahme aus, wenn das serialisierte Objekt die maximale Größe überschreitet. Bisher trat dies nur in einem Hintergrund-Thread auf, wo es nicht richtig verarbeitet werden konnte.- Es wird weiter zwischen beendeten und abgebrochenen Aufgaben unterschieden.
getWorkInfoById()
gibt währendListenableWorker.onStopped()
eineWorkInfo
mit demCANCELLED
State
zurück. null
Result
s inListenableWorker
als Fehler behandeln b/120362353- Spekulative Fehlerbehebung für Shield-Tablets mit API 24, bei denen manchmal eine
IllegalArgumentException
zurückgegeben wurde. b/119484416
Bruchstellenfreie API-Änderungen
- Der Support für Firebase JobDispatcher wurde entfernt, da die Funktion bald eingestellt wird. Das bedeutet, dass das
work-firebase
-Artefakt in der Betaphase nicht mehr aktualisiert wird. Wir werden in Zukunft eine Alternative hinzufügen. Payload
mitResult
zusammengeführtResult
ist jetzt eine „versiegelte Klasse“ mit drei konkreten Implementierungen, die Sie überResult.success()
(oderResult.success(Data)
),Result.failure()
(oderResult.failure(Data)
) undResult.retry()
abrufen können. IhreListenableFuture
ergeben jetztResult
stattPayload
.Worker
s haben keine Getter- und Setter-Methoden für die AusgabeData
.- Kotlin-Erweiterungsmethoden
Operation.await()
undListenableFuture.await()
hinzugefügt. Operation.getException()
wurde inOperation.getThrowable()
umbenannt.- Die Klasse
ContentUriTriggers
und die Methoden, die darauf verweisen, sind nicht mehr öffentlich verfügbar. - Die restlichen Methoden mit variabler Argumentanzahl in
WorkManager
,WorkContinuation
undOneTimeWorkRequest
wurden entfernt, um die API zu optimieren. Um Build-Probleme zu beheben, können Sie Ihre vorhandenen Variablenargumente inArrays.asList(...)
einschließen. Die Versionen mit einem Argument sind aber weiterhin verfügbar. WorkContinuation.combine(OneTimeWorkRequest, *)
Varianten wurden entfernt. Die API war verwirrend. Die vorhandenencombine
-Methoden sind verständlicher.
Version 1.0.0-alpha11
8. November 2018
Diese Version enthält viele Änderungen, die am beta
in die stabile API übernommen werden.
Diese Version enthält funktionsgefährdende API-Änderungen. Weitere Informationen finden Sie unten im Abschnitt Funktionsgefährdende API-Änderungen.
API-Änderungen
work-runtime-ktx
führt eine neueCoroutineWorker
ein.WorkStatus
wurde inWorkInfo
umbenannt. Alle entsprechendengetStatus
-Methodenvarianten wurden in die entsprechendengetWorkInfo
-Varianten umbenannt. Dies ist eine funktionsgefährdende Änderung.ListenableWorker.onStopped()
akzeptiert kein boolesche Argument mehr, das angibt, ob dieWorkRequest
storniert wurde. BeiWorkManager
wird diese Unterscheidung nicht mehr gemacht. Dies ist eine funktionsgefährdende Änderung.- Das
androidx.work.test
-Paket wurde inandroidx.work.testing
umbenannt. Dies ist eine funktionsgefährdende Änderung. - Setter für
Constraints
sind nicht mehr Teil der öffentlichen API. Dies ist eine funktionsgefährdende Änderung. WorkerParameters.getTriggeredContentUris()
undWorkerParameters.getTriggeredContentAuthorities()
sind zuvor zurückgegebene Arrays. Jetzt geben diese Methoden Sammlungen zurück. Dies ist eine funktionsgefährdende Änderung.ListenableWorker.onStartWork()
wird inListenableWorker.startWork()
umbenannt. Dies ist eine funktionsgefährdende Änderung.- Der Konstruktor für
WorkStatus
ist nicht mehr Teil der öffentlichen API. Dies ist eine funktionsgefährdende Änderung. Configuration.getMaxJobSchedulerID()
undConfiguration.getMinJobSchedulerID()
wurden inConfiguration.getMinJobSchedulerId()
undConfiguration.getMaxJobSchedulerId()
umbenannt. Dies ist eine funktionsgefährdende Änderung.- Der öffentlichen API wurden viele
@NonNull
-Hinweise 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
enqueue
- undcancel
-Methoden fürWorkManager
geben jetzt einen neuenOperation
-Typ zurück. Dies ist eine funktionsgefährdende Änderung. - Bei allen Varianten von
enqueue
werden keine Varargs mehr fürWorkRequest
s akzeptiert. Dies ist eine funktionsgefährdende Änderung. Verwenden Sie stattdessen Sammlungen. MitArrays.asList()
können Sie vorhandenen Code ändern. So konnten wir die API-Oberfläche und die Anzahl der Methoden reduzieren. - Der Versuch,
initialize
WorkManager
mehrmals pro Prozess auszuführen, führt jetzt zu einerIllegalStateException
. Dies ist eine funktionsgefährdende Änderung.
Fehlerkorrekturen
- Für
WorkRequest.Builder
s imwork-runtime-ktx
-Artefakt werden jetztListenableWorker
s verwendet. Korrekturen für b/117666259 - Die nächste Ausführungszeit für
PeriodicWork
muss in der Zukunft liegen. Korrekturen für b/118204399 - Entfernen Sie potenzielle Laufwerk-E/A-Vorgänge, wenn Sie WorkManager beim Starten der App verwenden. Korrekturen für b/117796731
- Behebung einer Race-Bedingung in
WorkConstraintsTracker
. Behebung des Problems android-workmanager/issues/56
Bruchstellenfreie API-Änderungen
WorkStatus
wurde inWorkInfo
umbenannt. Alle entsprechendengetStatus
-Methodenvarianten wurden in die entsprechendengetWorkInfo
-Varianten umbenannt.ListenableWorker.onStopped()
akzeptiert kein boolesche Argument mehr, das angibt, ob dieWorkRequest
storniert wurde. BeiWorkManager
wird diese Unterscheidung nicht mehr gemacht.- Das
androidx.work.test
-Paket wurde inandroidx.work.testing
umbenannt. - Setter für
Constraints
sind nicht mehr Teil der öffentlichen API. WorkerParameters.getTriggeredContentUris()
undWorkerParameters.getTriggeredContentAuthorities()
sind zuvor zurückgegebene Arrays. Jetzt geben diese Methoden Sammlungen zurück.ListenableWorker.onStartWork()
wird inListenableWorker.startWork()
umbenannt.- Der Konstruktor für
WorkStatus
ist nicht mehr Teil der öffentlichen API. Configuration.getMaxJobSchedulerID()
undConfiguration.getMinJobSchedulerID()
wurden inConfiguration.getMinJobSchedulerId()
undConfiguration.getMaxJobSchedulerId()
umbenannt.- Alle Varianten der Methoden
enqueue
undcancel
fürWorkManager
geben jetzt einen neuenOperation
-Typ zurück. - Bei allen Varianten von
enqueue
werden keine Varargs mehr fürWorkRequest
s akzeptiert. - Der Versuch,
initialize
WorkManager
mehrmals pro Prozess auszuführen, führt jetzt zu einerIllegalStateException
.
Version 1.0.0-alpha10
11. Oktober 2018
Diese Version unterstützt vom Entwickler gesteuerte asynchrone Arbeit. Diese Version enthält funktionsgefährdende API-Änderungen. Weitere Informationen finden Sie unten im Abschnitt Funktionsgefährdende API-Änderungen.
Wir gehen davon aus, dass sich WorkManager in den letzten Phasen der Alphaphase befindet. Wir gehen davon aus, dass die API in der Betaphase stabil ist. Bitte nehmen Sie sich Zeit, um Ihr Feedback in unserem Issue Tracker einzureichen.
API-Änderungen
- Alle bisher vorhandenen
deprecated
-Methoden und ‑Klassen wurden entfernt, insbesondere der Standardkonstruktor fürWorker
. Dies ist eine funktionsgefährdende API-Änderung. NonBlockingWorker
wurde inListenableWorker
umbenannt. Diese öffentliche Klasse ist jetzt sichtbar und kann verwendet werden.ListenableWorker
bietet Zugriff auf eine abstrakte Methode,ListenableFuture<Payload> onStartWork()
, die im Hauptthread aufgerufen wird. Sie können asynchrone Aufgaben starten und verarbeiten. Wenn du fertig bist, solltest du dieListenableFuture
entsprechend aktualisieren. Referenzimplementierungen vonListenableFuture
s finden Sie imFutures
-Paket inalpha02
(siehe AbschnittWorkManager
unten).Worker
erweitertListenableWorker
und funktioniert weiterhin wie zuvor mit einer abstraktenResult doWork()
-Methode.- Einige Methoden und Mitglieder wurden von
Worker
nachListenableWorker
verschoben. - Wir stellen demnächst Referenzimplementierungen für
ListenableWorker
s bereit, die Kotlin-Coroutinen (sobald die stabilen Versionen veröffentlicht werden) und RxJava2 verwenden.
- Die Schnittstelle
WorkerFactory
und die konkrete ImplementierungDefaultWorkerFactory
wurden in einer abstrakten Klasse namensWorkerFactory
zusammengeführt. Durch die Implementierung wird sichergestellt, dass das standardmäßige reflexionsbasierte Verhalten als letzte Maßnahme für alle vom Nutzer erstelltenWorkerFactory
-Instanzen aufgerufen wird. Dies ist eine funktionsgefährdende Änderung. WorkManager.synchronous()
undWorkContinuation.synchronous()
sowie alle zugehörigen Methoden wurden entfernt.ListenableFuture<Void>
wurde als Rückgabetyp vieler Methoden in der API hinzugefügt. Dies ist eine funktionsgefährdende API-Änderung.- Mit
ListenableFuture
s können Sie Daten jetzt synchron abrufen und beobachten. Beispiel:WorkManager.enqueue()
gab frühervoid
zurück, jetzt wirdListenableFuture<Void>
zurückgegeben. Sie könnenListenableFuture.addListener(Runnable, Executor)
oderListenableFuture.get()
aufrufen, um Code auszuführen, sobald der Vorgang abgeschlossen ist. - Diese
ListenableFuture
geben nicht an, ob der Vorgang erfolgreich war oder fehlgeschlagen ist, sondern nur, dass er abgeschlossen wurde. Sie müssen weiterhin WorkManager-Methoden verketten, um diese Informationen zu erhalten. cancel()
-Aufrufe für diese Objekte werden ignoriert, da sie verwirrend und schwer nachvollziehbar sind (werden der Vorgang oder die resultierende Arbeit abgebrochen?). Das ist im Vertrag vonFuture
vorgesehen.- Zur Wahrung der Parität mit den synchronen
getStatus*
-Methoden haben wirListenableFuture
-Varianten bereitgestellt und die vorhandenen Methoden, dieLiveData
zurückgegeben haben, so umbenannt, dass sie ausdrücklich „LiveData“ im Namen enthalten (z. B.getStatusesByIdLiveData(UUID)
). Dies ist eine API-Änderung, die die Abwärtskompatibilität beeinträchtigt.
- Mit
Fehlerkorrekturen
- Das bekannte Problem aus Alpha 09 mit doppelten
androidx-annotations.pro
-Dateien wurde behoben. Sie können die Umgehung aus den vorherigen Release-Notes entfernen, indem Sieexclude 'META-INF/proguard/androidx-annotations.pro'
aus Ihrer Gradle-Datei löschen. - Proguard-Konfigurationen hinzugefügt, um den neuen
Worker
-Konstruktor beizubehalten. b/116296569 - Potenzielles
NullPointerException
in einer Race-Bedingung behoben, bei der ArbeitREPLACE
wurde. b/116253486 und b/116677275 - Für
WorkContinuation.combine()
werden jetzt ein oder mehrereWorkContinuation
statt zwei oder mehr akzeptiert. b/117266752
Bruchstellenfreie API-Änderungen
- Alle bisher vorhandenen
deprecated
-Methoden und ‑Klassen wurden entfernt, insbesondere der Standardkonstruktor fürWorker
. - Die Schnittstelle
WorkerFactory
und die konkrete ImplementierungDefaultWorkerFactory
wurden in einer abstrakten Klasse namensWorkerFactory
zusammengeführt. WorkManager.synchronous()
undWorkContinuation.synchronous()
wurden entfernt.WorkManager.getStatus*()
-Methoden geben jetztListenableFuture
zurück.WorkManager.getStatus*LiveData()
gibtLiveData
zurück.
Version 1.0.0-alpha09
19. September 2018
Bekanntes Problem
Wenn Sie das folgende Problem feststellen: „Mehrere Dateien mit dem systemunabhängigen Pfad ‚META-INF/proguard/androidx-annotations.pro‘ gefunden“, fügen Sie Folgendes in Ihre Gradle-Datei ein, um das Problem vorübergehend zu beheben, bis wir es in alpha10 behoben haben:
android { packagingOptions { exclude 'META-INF/proguard/androidx-annotations.pro' } }
android { packagingOptions { exclude("META-INF/proguard/androidx-annotations.pro") } }
Fehlerkorrekturen
- Weitere Fehlerkorrektur für den Fehler „100 Aufträge“ hinzugefügt. b/115560696
- Einige Fehlerkorrekturen für Fehler bei Fremdschlüsseleinschränkungen aufgrund von Race-Zuständen hinzugefügt. b/114705286
- Delegierte
ConstraintTrackingWorker.onStopped(boolean)
-Aufrufe an die zugrunde liegendeWorker
. b/114125093 - Die korrekte minimale Backoff-Verzögerung für Firebase JobDispatcher erzwingen. b/113304626
- Verbesserte Threads werden innerhalb der Bibliothek garantiert.
- Potenzielles Problem mit der Deduplizierung von
LiveData
intern behoben.
API-Änderungen
- Sie können jetzt eigene
Worker
-Instanzen zur Laufzeit erstellen, indem Sie eineWorkerFactory
als Teil derWorkManager.Configuration
angeben. Die Fallback-Fabrik istDefaultWorkerFactory
, was dem Verhalten in früheren Versionen von WorkManager entspricht.- Die Standardkonstruktoren für
Worker
undNonBlockingWorker
sind jetzt als eingestellt gekennzeichnet. Verwenden Sie den neuen Konstruktor (Worker(Context, WorkerParameters)
) und rufen Siesuper(Context, WorkerParameters)
auf. In zukünftigen Versionen von WorkManager wird der Standardkonstruktor entfernt.
- Die Standardkonstruktoren für
- Wir verwenden das neue
ListenableFuture
-Artefakt intern (ohne Guava-Abhängigkeiten). In zukünftigen Releases werden ListenableFutures in die API eingeführt. Durch diese Änderung kannNonBlockingWorker
später wieder eingeblendet werden. - Es ist jetzt möglich, zeitgesteuerte Aufgaben in
TestDriver
überTestDriver.setInitialDelayMet(UUID)
undTestDriver.setPeriodDelayMet(UUID)
auszulösen. b/113360060
Wichtige Änderungen
- Die Standardkonstruktoren
Worker
undNonBlockingWorker
sind veraltet. Bitte migrieren Sie so schnell wie möglich zum neuen Konstruktor. In zukünftigen Versionen wird der Standardkonstruktor entfernt.
Version 1.0.0-alpha08
27. August 2018
Fehlerkorrekturen
- WorkManager-Komponenten, die explizit als nicht für den direkten Start geeignet gekennzeichnet sind, werden beim direkten Start nicht gestartet. In Zukunft werden wir eine Version von WorkManager anbieten, die direkt nach dem Starten des Geräts aktiv ist. b/112665532
- Ein Problem wurde behoben, bei dem wiederholte Aufgaben nicht ausgeführt wurden. b/112604021
- Behoben wurde ein Problem, bei dem sich wiederkehrende Aufgaben nicht wiederholt ausführen ließen (im Zusammenhang mit dem oben genannten Problem). b/112859683
- Es werden Backoff-Richtlinien berücksichtigt, wenn der App-Prozess bereits ausgeführt wird.
- Die Ausnahmemeldungen in
Data
wurden korrigiert, um anzugeben, dass das Limit 10 KB beträgt. - Der maximale Wert von
Configuration.setMaxSchedulerLimit(int)
wurde auf 50 gesenkt, um Verzögerungen bei derJobScheduler
-Verarbeitung zu berücksichtigen. b/112817355
Version 1.0.0-alpha07
16. August 2018
Fehlerkorrekturen
- Behoben wurde ein Problem mit einer potenziellen SQL-Abfrage mit negativen Grenzwerten, die eine unbegrenzte Anzahl von Ergebnissen zurückgeben konnte.
- Wenn die Ausführung einer Aufgabe abgeschlossen ist, werden jetzt alle ausstehenden Kopien dieser Aufgabe in anderen Schedulern korrekt abgebrochen. Dadurch wurde das Limit von
JobScheduler
Jobs überschritten. b/111569265 - Ein
ConcurrentModificationException
inConstraintTracker
wurde behoben. b/112272753 - Die Anmerkungen zum Rückgabetyp von
Data.getBooleanArray(String)
undData.getIntArray(String)
wurden von@NonNull
in@Nullable
geändert. b/112275229
API-Änderungen
Worker
erweitert jetzt eine neue Klasse,NonBlockingWorker
. Dies hat keine Auswirkungen auf die aktuelle Nutzung. Künftig wirdNonBlockingWorker
vollständig für benutzerdefinierte Lösungen für Threads unterstützt.- Die Anmerkungen zum Rückgabetyp von
Data.getBooleanArray(String)
undData.getIntArray(String)
wurden von@NonNull
in@Nullable
geändert. b/112275229 - Kotlin-Erweiterungen:
Map.toWorkData()
wurde eingestellt undworkDataOf(vararg Pair<String, Any?>)
auf oberster Ebene hinzugefügt, um für mehr Einheitlichkeit mit vorhandenen APIs zu sorgen.
Version 1.0.0-alpha06
1. August 2018
Fehlerkorrekturen
- Verhindern einer Datenbanksperre beim Planen von Aufgaben. b/111801342
- Ein Fehler wurde behoben, durch den
PeriodicWork
im Ruhemodus nicht wie geplant ausgeführt wurde. b/111469837 - Behebung einer Race-Condition beim Tracking von Einschränkungen, die zum Absturz von
WorkManager
führt. googlecodelabs/android-workmanager/issues/56 - Erstellen Sie eindeutige
WorkRequest
, wenn SieWorkRequest.Builder#build()
verwenden. b/111408337 - Aktivieren Sie die Verwendung von
RescheduleReceiver
nur, wennWorkRequest
s dies erfordern. b/111765853
Version 1.0.0-alpha05
24. Juli 2018
API-Änderungen
WorkManager.getInstance()
ist jetzt mit@NonNull
statt@Nullable
gekennzeichnet. Wenn das Singleton bei der manuellen Initialisierung nicht ordnungsgemäß initialisiert wird, wirft die Methode stattdessen eineIllegalStateException
aus. Dies ist eine API-Änderung, die die Abwärtskompatibilität beeinträchtigt.- Die neue API
Configuration.Builder.setMinimumLoggingLevel(int)
wurde hinzugefügt, mit der die Detaillierung von WorkManager gesteuert werden kann. Standardmäßig werden von WorkManagerLog.INFO
und höher protokolliert. - Die Signatur von
Data.getString()
wurde geändert, sodass kein Standardwert mehr verwendet wird (es ist implizitnull
). Dies ist eine nicht abwärtskompatible API-Änderung. - Einige Methoden, die nur für die interne Verwendung erforderlich sind, wurden mit
@hide
gekennzeichnet. Dazu gehören der Konstruktor vonConstraints
,Data.toByteArray()
undData.fromByteArray(byte[])
. Dies ist eine funktionsgefährdende API-Änderung.
Fehlerkorrekturen
- WorkManager führt keine Aufgaben mehr aus, wenn bekannte Fälle der automatischen Sicherung auftreten. Dies könnte zu einem Absturz geführt haben. b/110564377
- Das doppelte Planen von
PeriodicWorkRequest
s bei Verwendung vonJobScheduler
wurde behoben. b/110798652 - Ein Problem wurde behoben, durch das
PeriodicWorkRequest
s nach dem Ruhemodus des Geräts nicht richtig ausgeführt wurden. b/111469837 - Ein Problem mit anfänglichen Verzögerungen bei der Verwendung von Firebase JobDispatcher wurde behoben. b/111141023
- Einige potenzielle Race-Bedingungen und Zeitprobleme wurden behoben.
- Nicht mehr benötigte
BroadcastReceiver
s wurden korrekt freigegeben. - Die Leistung der Neuplanung wurde optimiert, wenn Apps nach dem Erzwingen des Schließens neu gestartet werden.
- Es ist zulässig,
TestScheduler.setAllConstraintsMet(UUID)
vor oder nach dem Einfügen der angegebenenWorkRequest
aufzurufen. b/111238024
Wichtige Änderungen
WorkManager.getInstance()
ist jetzt mit@NonNull
statt@Nullable
gekennzeichnet.- Die Signatur von
Data.getString()
wurde geändert, sodass sie keinen Standardwert mehr annimmt (implizitnull
). - Einige Methoden, die nur für die interne Verwendung erforderlich sind, wurden mit
@hide
gekennzeichnet. Dazu gehören der Konstruktor vonConstraints
,Data.toByteArray()
undData.fromByteArray(byte[])
.
Version 1.0.0-alpha04
26. Juni 2018
Fehlerkorrekturen
PeriodicWorkRequest
s werden jetzt bei Verwendung derAlarmManager
-basierten Implementierung korrekt neu geplant.- Ein potenzieller ANR wurde behoben, der beim Neuplanen aller Worker nach einem erzwungenen Beenden oder Neustart auftrat. b/110507716
- Den verschiedenen WorkManager APIs wurden Anmerkungen zur Null-Zulässigkeit hinzugefügt. b/110344065
- Nicht abgefangene Ausnahmen, die während der Ausführung des Workers auftreten, werden protokolliert. b/109900862
- Zerstörende Datenbankmigrationen sind jetzt zulässig, wenn Sie zu einer älteren Version von WorkManager zurückkehren möchten. b/74633270
- Ein Absturz bei der Migration, der beim Erstellen doppelter impliziter Tags auftrat, wurde behoben. Dieses Problem tritt sehr selten auf und nur, wenn Sie 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/80346526Duplikate Jobs bei der Verwendung von
JobScheduler
nach einem Geräteneustart behobenJobs mit Content-URI-Triggern bleiben jetzt nach einem Neustart erhalten. b/80234744
Aktualisierte Dokumentation: b/109827628, b/109758949, b/80230748
Ein Absturz beim erneuten Einfügen einer
WorkRequest
in die Warteschlange wurde behoben. b/109572353.Kotlin-Compilerwarnungen bei Verwendung der
work-runtime-ktx
-Abhängigkeit wurden behoben.Für WorkManager wird jetzt
Room
Version1.1.1-rc1
verwendet.
API-Änderungen
getStatusesSync()
, die synchrone Version vonWorkContinuation.getStatuses()
, wurde hinzugefügt.Worker
kann zwischen einer vom Nutzer initiierten Stornierung und einer vorübergehenden vom Betriebssystem angeforderten Beendigung unterscheiden.Worker.isStopped()
gibttrue
zurück, wenn eine Art von Unterbrechung angefordert wurde.Worker.isCancelled()
gibttrue
zurück, wenn die Arbeit explizit abgebrochen wurde. b/79632247- Unterstützung für JobParameters#getNetwork() unter API 28 hinzugefügt. Dieser wird über
Worker.getNetwork()
freigegeben. Configuration.Builder.setMaxSchedulerLimit(int maxSchedulerLimit)
wurde hinzugefügt, damit Sie festlegen können, wie viele Jobs anJobScheduler
oderAlarmManager
gesendet werden können. So wird verhindert, dassWorkManager
alle verfügbarenJobScheduler
-Slots belegt.Configuration.setJobSchedulerJobIdRange(int minJobSchedulerId, int maxJobSchedulerId)
wurde hinzugefügt, um einen Bereich vonJobScheduler
-Job-IDs zu definieren, die fürWorkManager
sicher sind. b/79996760Worker.getRunAttemptCount()
gibt die aktuelle Ausführungsanzahl für eine bestimmteWorker
zurück. b/79716516- Mit
WorkManager.enqueueUniquePeriodicWork(String uniqueWorkName, ExistingPeriodicWorkPolicy existingPeriodicWorkPolicy, PeriodicWorkRequest periodicWork)
kannst du eindeutigePeriodicWorkRequest
s in die Warteschlange stellen. b/79600647 WorkManager.cancelAllWork()
kündigt alleWorker
s. Bibliotheken, die vonWorkManager
abhängen, können mithilfe vonWorkManager.getLastCancelAllTimeMillis()
abfragen, wann diese Methode zuletzt aufgerufen wurde, um den internen Status zusätzlich zu bereinigen.WorkManager.pruneWork()
wurde hinzugefügt, um abgeschlossene Jobs aus der internen Datenbank zu entfernen. b/79950952, b/109710758
Verhaltensänderungen
- Ein implizites Tag für alle
WorkRequest
s hinzugefügt, also der voll qualifizierte Klassenname für dieWorker
. So könnenWorkRequest
s ohnetag
s oder wenn dieid
nicht verfügbar ist, entfernt werden. b/109572351
Wichtige Änderungen
Worker.WorkerResult
wurde inWorker.Result
umbenannt.Worker.onStopped
hat jetzt einen zusätzlichenisCancelled
-Parameter, der auftrue
gesetzt wird, wenn dieWorker
-Anfrage explizit abgebrochen wurde.
Version 1.0.0-alpha02
24. Mai 2018
Fehlerkorrekturen
- Ein
NullPointerException
wurde amState.isFinished()
behoben. b/79550068 - Ein Problem wurde behoben, das dazu führte, dass
Worker
s amApplication.onCreate()
neu geplant wurden. b/79660657 - Ein Problem wurde behoben, bei dem mehr Arbeit geplant werden konnte, als vom Betriebssystem zulässig ist. b/79497378
- Die Bereinigung von Wakelocks, die mit
Worker
s verknüpft sind, wurde in den Hintergrund-Thread verschoben. - Bei der
AlarmManager
-Implementierung wird jetzt die Bereinigung korrekt durchgeführt, wenn alle ausstehenden Aufgaben abgeschlossen sind. - Bereinigungs-SQL-Abfragen für andere Sprachen als Englisch wurden korrigiert. b/80065360
- Unterstützung für
float
inData
hinzugefügt b/79443878 Data.Builder.putAll()
gibt jetzt eine Instanz derBuilder
zurück. b/79699162- Weitere Javadoc-Informationen und Korrekturen in der Dokumentation. b/79691663
API-Änderungen
Worker
s können auf das Anhalten reagieren. MitWorker.isStopped()
können Sie prüfen, ob eineWorker
beendet wurde. MitWorker.onStopped()
können Sie einfache Bereinigungsvorgänge ausführen.- Die
Worker.getTags()
API gibt eineSet
von Tags zurück, die mit derWorker
verknüpft sind. - Es wurden
javax.time.Duration
-Überladungen für APIs hinzugefügt, die eine Kombination aus Dauer undTimeUnit
s annehmen. Dies wird von@RequiresApi(26)
geschützt. WorkManager
Erweiterungen wurden aus demandroidx.work.ktx
-Paket in dasandroidx.work
-Paket verschoben. Die alten Erweiterungen werden eingestellt und in einer zukünftigen Version entfernt.Configuration.withExecutor()
wurde eingestellt. Verwenden Sie stattdessenConfiguration.setExecutor()
.
Version 1.0.0-alpha01
8. Mai 2018
WorkManager vereinfacht die Planung und Ausführung von garantierten, einschränkungsbewussten Hintergrundaufgaben. Diese erste Version ist 1.0.0-alpha01
.