WorkManager

Mit der WorkManager API ist es einfach, zurückstellbare, asynchrone Aufgaben zu planen, die zuverlässig ausgeführt werden müssen. Mit diesen APIs können Sie eine Aufgabe erstellen und an WorkManager übergeben, damit sie ausgeführt wird, wenn die Arbeitsbeschränkungen erfüllt sind.
Letzte Aktualisierung Stabile Version Releasekandidat Beta-Ausgabe Alpharelease
17. April 2024 2.9.0 2.10.0-alpha02

Abhängigkeiten deklarieren

Um eine Abhängigkeit von WorkManager hinzuzufügen, müssen Sie Ihrem Projekt das Google Maven-Repository hinzufügen:

Fügen Sie der Datei build.gradle für Ihre Anwendung oder Ihr Modul die Abhängigkeiten für die benötigten Artefakte hinzu:

Groovy

dependencies {
    def work_version = "2.9.0"

    // (Java only)
    implementation "androidx.work:work-runtime:$work_version"

    // Kotlin + coroutines
    implementation "androidx.work:work-runtime-ktx:$work_version"

    // optional - RxJava2 support
    implementation "androidx.work:work-rxjava2:$work_version"

    // optional - GCMNetworkManager support
    implementation "androidx.work:work-gcm:$work_version"

    // optional - Test helpers
    androidTestImplementation "androidx.work:work-testing:$work_version"

    // optional - Multiprocess support
    implementation "androidx.work:work-multiprocess:$work_version"
}

Kotlin

dependencies {
    val work_version = "2.9.0"

    // (Java only)
    implementation("androidx.work:work-runtime:$work_version")

    // Kotlin + coroutines
    implementation("androidx.work:work-runtime-ktx:$work_version")

    // optional - RxJava2 support
    implementation("androidx.work:work-rxjava2:$work_version")

    // optional - GCMNetworkManager support
    implementation("androidx.work:work-gcm:$work_version")

    // optional - Test helpers
    androidTestImplementation("androidx.work:work-testing:$work_version")

    // optional - Multiprocess support
    implementation("androidx.work:work-multiprocess:$work_version")
}

Informationen zur Verwendung von Kotlin-Erweiterungen finden Sie in der ktx-Dokumentation.

Weitere Informationen zu Abhängigkeiten finden Sie unter Build-Abhängigkeiten hinzufügen.

Feedback

Dein Feedback hilft uns, Jetpack zu verbessern. Lassen Sie uns wissen, wenn Sie neue Probleme entdecken oder Ideen zur Verbesserung dieser Bibliothek haben. Sehen Sie sich die vorhandenen Probleme in dieser Bibliothek an, bevor Sie eine neue erstellen. Durch Klicken auf die Stern-Schaltfläche können Sie zu einem vorhandenen Problem abstimmen.

Neues Problem erstellen

Weitere Informationen finden Sie in der Dokumentation zum Issue Tracker.

Version 2.10

Version 2.10.0-alpha02

17. April 2024

androidx.work:work-*:2.10.0-alpha02 wird freigegeben. Version 2.10.0-alpha02 enthält diese Commits.

API-Änderungen

  • Neue Funktion zur Ausgabe von Trace-Spans über eine konfigurierbare @RestrictTo-Tracer in WorkManager. (I17d7f, b/260214125)
  • Configuration.workerCoroutineContext wurde zur Kontrolle des Disponenten hinzugefügt, auf dem CoroutineWorker ausgeführt wird. Es hilft, die Nutzung von Dispatchers.Default in WorkManager vollständig zu vermeiden. (Icd1b7)
  • Benutzerdefinierte Ausnahme-Handler für Worker hinzufügen (Ib1b74, b/261190695)
  • OneTimeWorkRequest.Builder und PeriodicWorkRequest.Builder können jetzt mit KClass statt Class erstellt werden: val request = OneTimeWorkRequest.Builder(Worker::class).setConstraints(...).build() (Ib55f6)
  • Die Klasse WorkManager wurde zu Kotlin migriert. Methoden, die LiveData, ListenableFuture oder Flow zurückgeben, liefern jetzt korrekte Informationen zur Null-Zulässigkeit. Möglicherweise sind Änderungen im Quellcode der Clients erforderlich, wenn die Annahmen zur Null-Zulässigkeit in diesem Code falsch waren. (If6757)

Version 2.10.0-alpha01

24. Januar 2024

androidx.work:work-*:2.10.0-alpha01 wird freigegeben. Version 2.10.0-alpha01 enthält diese Commits.

Neue Funktionen

  • Entwickler können NetworkRequest als Einschränkung für einen Worker über die Methode Constraints.setRequiredNetworkRequest angeben. Dadurch können Sie genauer steuern, welches Netzwerk dieser Worker ausführen soll.

API-Änderungen

  • Möglichkeit zur Angabe von NetworkRequest als Einschränkung wird hinzugefügt. (Id98a1, b/280634452)

Version 2.9

Version 2.9.0

29. November 2023

androidx.work:work-*:2.9.0 wird freigegeben. Version 2.9.0 enthält diese Commits.

Wichtige Änderungen seit Version 2.8.0

  • Beobachtbarkeit über Flow Sek. Anstelle von LiveData kann der Fortschritt des Workers jetzt mithilfe von Flow über WorkManager.getWorkInfosFlow und ähnliche Methoden beobachtet werden.
  • WorkManager gibt jetzt einen Hinweis darauf, warum ein Worker zuvor angehalten wurde. Sie kann von einem Worker selbst mit der Methode getStopReason() oder von WorkInfo mit getStopReason() abgefragt werden.
  • Präzise Zeitplanung der regelmäßigen Mitarbeiter über setNextScheduleTimeOverride. Dies ermöglicht die dynamische Berechnung des nächsten regelmäßigen Arbeitsplans, der verwendet werden kann, um erweiterte Funktionen wie adaptive Aktualisierungszeiten, benutzerdefiniertes Wiederholungsverhalten oder die Ausführung eines Newsfeed-Workers zu implementieren, bevor der Nutzer jeden Morgen ohne Drift aufwacht. ExistingPeriodicWorkPolicy.UPDATE sollte bei diesen Verfahren verwendet werden, um zu vermeiden, dass ein derzeit ausgeführter Worker bei der Planung des nächsten Workers abgebrochen wird.
  • WorkManager-Tests mit Threading, die der Produktion entsprechen. ExecutorsMode.PRESERVE_EXECUTORS kann in initializeTestWorkManager verwendet werden, um die in Configuration festgelegten Executors beizubehalten und den echten Hauptthread zu verwenden.
  • Coroutines APIs wie CoroutineWorker wurden vom zusätzlichen Artefakt „work-runtime-ktx“ in das Hauptartefakt „work-runtime“ verschoben. „work-runtime-ktx“ ist jetzt leer.

API-Änderungen

  • stopReason“ wurde „WorkInfo“ hinzugefügt. Sie macht stopReason verfügbar, nachdem der Worker ausgeführt wurde. Das kann in nutzungsfreundlicher Weise hilfreich sein, um stopReason zu melden. Denn sobald ein Worker gestoppt wurde, könnte die App selbst sehr schnell beendet werden. (I21386)
  • Zulassen, dass Clock über die Konfiguration festgelegt und für die Ausführungsabfolge von Worker-Tests verwendet wird. (Ic586e)
  • Zu ListenableWorker wurde die Methode getStopReason() hinzugefügt, die einen Hinweis darauf gibt, warum der Worker angehalten wurde. (I07060)
  • WorkManagerTestInitHelper#closeWorkDatabase() wurde hinzugefügt, um die Warnung von Closeguard über gehackte Ressourcen zu vermeiden. (Ia8d49)
  • Der Konstruktor von WorkInfo ist jetzt öffentlich, was für Tests nützlich sein kann. (Ia00b6, b/209145335)
  • work-runtime-ktx ist jetzt leer, CoroutineWorker und andere Kotlin-spezifische Dienstprogramme sind jetzt im Hauptartefakt verfügbar. (I71a9a)
  • setNextScheduleTimeOverride-Methode hinzugefügt, die eine genaue Einrichtung regelmäßiger Arbeitspläne ermöglicht (I3b4da)
  • getNextScheduleTimeMillis wurde hinzugefügt, um Informationen zur geplanten Laufzeit zu erhalten, wird WorkInfo hinzugefügt. (I797e4)
  • Informationen zur anfänglichen Verzögerung und Periodizität werden zu WorkInfo hinzugefügt. (I52f2f)
  • Neue Methode zur Beobachtung von Workern über Abläufe über die Methoden getWorkInfosByTagFlow, getWorkInfoByIdFlow, getWorkInfosForUniqueWorkFlow, getWorkInfosFlow (If122a)
  • Fehlende @RequiresApi(...)-Annotationen zu den Konstruktoren und Attributen von Constraints hinzugefügt. Sie sind jetzt an den entsprechenden Anmerkungen in Settern in Constraints.Builder ausgerichtet, die in frühen Versionen von WorkManager vorhanden waren. (I6d7d2)
  • WorkManager hat jetzt ein separates Limit für Inhalts-URI-Worker, um ihnen garantierte Slots in JobScheduler zuzuweisen, um zu verhindern, dass unter hoher Auslastung fehlende Inhaltsaktualisierungen fehlen. Das Limit kann über Configuration.Builder.setContentUriTriggerWorkersLimit konfiguriert werden. (Ic128f)
  • Einschränkungen werden zu WorkInfo hinzugefügt. (I162c0)

Version 2.9.0-rc01

18. Oktober 2023

androidx.work:work-*:2.9.0-rc01 wird freigegeben. Version 2.9.0-rc01 enthält diese Commits.

  • Keine Änderungen seit der letzten Betaversion

Version 2.9.0-beta01

6. September 2023

androidx.work:work-*:2.9.0-beta01 wird freigegeben. Version 2.9.0-beta01 enthält diese Commits.

API-Änderungen

Version 2.9.0-alpha02

26. Juli 2023

androidx.work:work-*:2.9.0-alpha02 wird freigegeben. Version 2.9.0-alpha02 enthält diese Commits.

Neue Funktionen

  • WorkManager gibt jetzt einen Hinweis darauf, warum ein Worker zuvor angehalten wurde. Sie kann von einem Worker selbst mit der Methode getStopReason() oder von WorkInfo mit getStopReason() abgefragt werden.

API-Änderungen

  • stopReason“ wurde „WorkInfo“ hinzugefügt. Sie stellt stopReason nach der Ausführung des Workers zur Verfügung. Dies kann in nutzungsfreundlicher Weise hilfreich sein, um stopReason zu melden, da die App selbst sehr schnell beendet werden könnte, sobald ein Worker angehalten wurde. (I21386)
  • Ermöglicht es, die Uhr über die Konfiguration festzulegen und die Ausführungsabfolge von Worker-Tests zu steuern. (Ic586e)
  • Zu ListenableWorker wurde die Methode getStopReason() hinzugefügt, die einen Hinweis darauf gibt, warum der Worker angehalten wurde. (I07060)
  • WorkManagerTestInitHelper#closeWorkDatabase() wurde hinzugefügt, um die Warnung von Closeguard über gehackte Ressourcen zu vermeiden. (Ia8d49)

Fehlerkorrekturen

  • Die Möglichkeit zum Umgehen von overrideNextScheduleTime mit TestDriver wurde hinzugefügt und Probleme mit der Testbarkeit wurden behoben. (IC2905)

Version 2.9.0-alpha01

7. Juni 2023

androidx.work:work-*:2.9.0-alpha01 wird freigegeben. Version 2.9.0-alpha01 enthält diese Commits.

Neue Funktionen

  • Beobachtbarkeit über Flow Sek. Anstelle von LiveData kann der Fortschritt des Workers jetzt mithilfe von Flow über WorkManager.getWorkInfosFlow und ähnliche Methoden beobachtet werden.
  • Präzise Zeitplanung der regelmäßigen Mitarbeiter über setNextScheduleTimeOverride. Dies ermöglicht die dynamische Berechnung des nächsten regelmäßigen Arbeitsplans, der verwendet werden kann, um erweiterte Funktionen wie adaptive Aktualisierungszeiten, benutzerdefiniertes Wiederholungsverhalten oder die Ausführung eines Newsfeed-Workers zu implementieren, bevor der Nutzer jeden Morgen ohne Drift aufwacht. Mit diesen Methoden sollten Sie ExistingPeriodicWorkPolicy.UPDATE verwenden, um zu vermeiden, dass ein derzeit ausgeführter Worker bei der Planung des nächsten Workers abgebrochen wird.
  • WorkManager testet mit Threading, die der Produktion entsprechen. ExecutorsMode.PRESERVE_EXECUTORS kann verwendet werden, um die in Configuration festgelegten Executors zu erhalten und den echten Hauptthread zu verwenden.
  • Koroutinen-APIs wie CoroutineWorker wurden vom zusätzlichen Artefakt work-runtime-ktx in das Hauptartefakt work-runtime verschoben. work-runtime-ktx ist jetzt leer.

API-Änderungen

  • Der Konstruktor von WorkInfo ist jetzt öffentlich, was für Tests nützlich sein kann. (Ia00b6, b/209145335)
  • work-runtime-ktx ist jetzt leer. CoroutineWorker und andere Kotlin-spezifische Dienstprogramme sind jetzt im Hauptartefakt von work-runtime verfügbar. (I71a9a)
  • setNextScheduleTimeOverride-Methode hinzugefügt, die eine genaue Einrichtung regelmäßiger Arbeitspläne ermöglicht (I3b4da)
  • getEarliestRunTimeMillis wurde in getNextScheduleTimeMillis umbenannt. (I2bd7a)
  • Informationen zur nächsten geplanten Ausführung werden zu WorkInfo hinzugefügt. (I797e4)
  • Informationen zur anfänglichen Verzögerung und Periodizität werden zu WorkInfo hinzugefügt. (I52f2f)
  • Neue Methode zur Beobachtung von Workern über Abläufe über die Methoden getWorkInfosByTagFlow, getWorkInfoByIdFlow, getWorkInfosForUniqueWorkFlow, getWorkInfosFlow (If122a)
  • Fehlende @RequiresApi(...)-Annotationen zu den Konstruktoren und Attributen von Einschränkungen hinzugefügt. Sie sind jetzt an den entsprechenden Anmerkungen in Settern in Constraints.Builder ausgerichtet, die in frühen Versionen von WorkManager vorhanden waren. (I6d7d2)
  • WorkManager hat jetzt ein separates Limit für Inhalts-URI-Worker, um ihnen garantierte Slots in JobScheduler zuzuweisen, um zu verhindern, dass unter hoher Auslastung fehlende Inhaltsaktualisierungen fehlen. Limit kann über Configuration.Builder.setContentUriTriggerWorkersLimit konfiguriert werden. (Ic128f)
  • Einschränkungen werden zu WorkInfo hinzugefügt. (I162c0)

Version 2.8

Version 2.8.1

22. März 2023

androidx.work:work-*:2.8.1 wird freigegeben. Version 2.8.1 enthält diese Commits.

Fehlerkorrekturen

  • Ein ANR-Fehler in RescheduleReceiver wurde behoben, der zuvor zwei gleichzeitige Broadcasts nicht richtig verarbeitet hat. (b/236906724)

Version 2.8.0

8. Februar 2023

androidx.work:work-*:2.8.0 wird freigegeben. Version 2.8.0 enthält diese Commits.

Wichtige Änderungen seit Version 2.7.0

Neue Funktionen

API-Änderungen

  • WorkManager.updateWork wurde hinzugefügt, um die Arbeit zu aktualisieren, bei der die ursprüngliche Warteschlangenzeit und die Verkettung beibehalten wurden.(I9a248, b/219446409)
  • ExistingPeriodicWorkPolicy.UPDATE wurde hinzugefügt. Mit dieser Richtlinie kann ein regelmäßiges Werk mit dem Namen aktualisiert werden. Sie ähnelt der vorhandenen REPLACE, ist jedoch weniger aufdringlich: Ein Worker, der gerade ausgeführt wird, wird nicht abgebrochen, und er behält die Warteschlangenzeit bei. Die anfängliche Verzögerung und der Zeitraum werden anhand der ursprünglichen Warteschlangenzeit und nicht anhand der Aktualisierungszeit berechnet. REPLACE wurde eingestellt, um die Verwechslungen zwischen REPLACE und UPDATE mit ähnlichen Namen zu verringern. Wenn Sie die vorherige Semantik von REPLACE beibehalten möchten, können Sie die neu hinzugefügte CANCEL_AND_REENQUEUE verwenden, die mit REPLACE identisch ist. (I985ed, b/219446409)
  • Es wurde die Möglichkeit hinzugefügt, Planungsausnahmen abzufangen, die Consumer<Throwable> über setSchedulingExceptionHandler) bereitstellen.
  • Es wurde die Möglichkeit hinzugefügt, Consumer<Throwable> über setInitializationExceptionHandler bereitzustellen, um festzustellen, ob beim Initialisieren von WorkManager Probleme aufgetreten sind.
  • Inline-Hilfsprogramme für OneTimeWorkRequest und PeriodicWorkRequest wurden von androidx.work:work-runtime-ktx nach androidx.work:work-runtime verschoben (I0010f, b/209145335)
  • Die Hilfsmethoden WorkQuery.fromIds, WorkQuery.fromStates, WorkQuery.fromUniqueWorkNames und WorkQuery.fromTags wurden hinzugefügt, um WorkQuery direkt zu erstellen. (b/199919736) (If48f2, b/199919736)
  • getForegroundInfo wurde zu Worker hinzugefügt. (Ic1ead)
  • RxWorker sowohl für RxJava 2 als auch RxJava 3 hat jetzt setForeground, die Completable zurückgibt. Diese kann anstelle von setForegroundInfoAsync verwendet werden, die ListenableFuture zurückgibt.
  • Bei RxWorker für RxJava 2 und RxJava 3 gibt getForegroundInfo den Wert Single zurück, der anstelle von getForegroundInfoAsync verwendet werden kann, das ListenableFuture zurückgibt. (b/203851459)
  • Einschränkungen können jetzt direkt anstelle von Constraints.Builder erstellt werden, was für Kotlin-Nutzer praktisch ist. (Idc390, b/137568653)
  • Es besteht jetzt die Möglichkeit zu prüfen, ob WorkManager initialisiert wurde. Außerdem wurde eine neue getConfiguration() API für Bibliotheksentwickler hinzugefügt, um die Konfiguration abzurufen, mit der WorkManager initialisiert wurde. (I6eff3, b/212300336)

Fehlerkorrekturen

  • Ein Problem mit dem gierigen Planer wurde behoben, der verhinderte, dass Worker unter Last sofort ausgeführt werden konnten. (I9686b, b/248111307)
  • @RequiresPermission wurde APIs hinzugefügt, für die ab SDK 33 die Berechtigung POST_NOTIFICATIONS gewährt werden muss. (Ie542e, b/238790278)
  • Leiten Sie Stornierungen in der CoroutineScope an die ListenableFuture weiter, wenn Sie suspendCancellableCoroutine verwenden.

Version 2.8.0-rc01

7. Dezember 2022

androidx.work:work-*:2.8.0-rc01 wird freigegeben. Version 2.8.0-rc01 enthält diese Commits.

Neue Funktionen

  • In diesem Release gibt es keine neuen Funktionen. Dies ist hauptsächlich ein Versions-Bump.

Version 2.8.0-beta02

9. November 2022

androidx.work:work-*:2.8.0-beta02 wird freigegeben. Version 2.8.0-beta02 enthält diese Commits.

Fehlerkorrekturen

  • Fehler bei der equals-Methode in WorkInfo behoben, bei der bisher keine Informationen zur neuen Generierung berücksichtigt wurden. (4.977 cm3)

Version 2.8.0-beta01

5. Oktober 2022

androidx.work:work-*:2.8.0-beta01 wird freigegeben. Version 2.8.0-beta01 enthält diese Commits.

Fehlerkorrekturen

  • Ein Problem mit dem gierigen Planer wurde behoben, der verhinderte, dass Worker unter Last sofort ausgeführt werden konnten. (I9686b, b/248111307)

Version 2.8.0-alpha04

7. September 2022

androidx.work:work-*:2.8.0-alpha04 wird freigegeben. Version 2.8.0-alpha04 enthält diese Commits.

API-Änderungen

  • WorkerInfo.getGeneration() und WorkerParameters.getGeneration() wurden hinzugefügt, die die Generation eines Workers zurückgeben. Ein Worker hat mehrere Generationen, wenn er über WorkManager.updateWork oder WorkManager.enqueueUniquePeriodicWork mit ExistingPeriodicWorkPolicy.UPDATE aktualisiert wurde. Wenn der Worker gerade ausgeführt wird, kann diese Methode bei einer Aktualisierung während der Ausführung des Workers eine neuere Generation von der des aktuell ausgeführten Workers zurückgeben. (I665c5, b/219446409) (I128a9, b/219446409)
  • InitializationExceptionHandler, ein Ausnahme-Handler, mit dem ermittelt werden kann, ob beim Initialisieren von WorkManager Probleme aufgetreten sind, wurde hinzugefügt. (I061de)

Version 2.8.0-alpha03

10. August 2022

androidx.work:work-*:2.8.0-alpha03 wird freigegeben. Version 2.8.0-alpha03 enthält diese Commits.

Neue Funktionen

  • Es wurde eine Möglichkeit hinzugefügt, WorkRequests auf unaufdringliche Weise zu aktualisieren, wodurch die ursprüngliche Warteschlangenzeit, Verkettungen usw. erhalten bleiben. Weitere Informationen finden Sie unter WorkManager.updateWork und ExistingPeriodicWorkPolicy.UPDATE.

API-Änderungen

  • WorkManager.updateWork wurde hinzugefügt, um die Arbeit zu aktualisieren, bei der die ursprüngliche Warteschlangenzeit und die Verkettung beibehalten wurden.(I9a248, b/219446409)
  • ExistingPeriodicWorkPolicy.UPDATE wurde hinzugefügt. Mit dieser Richtlinie kann ein regelmäßiges Werk mit dem Namen aktualisiert werden. Sie ähnelt der vorhandenen REPLACE, ist jedoch weniger aufdringlich: Ein Worker, der gerade ausgeführt wird, wird nicht abgebrochen, und er behält die Warteschlangenzeit bei. Die anfängliche Verzögerung und der Zeitraum werden anhand der ursprünglichen Warteschlangenzeit und nicht anhand der Aktualisierungszeit berechnet. REPLACE wurde eingestellt, um eine Verwechslung zwischen REPLACE und UPDATE mit ähnlichen Namen zu vermeiden. Wenn Sie die vorherige Semantik von REPLACE beibehalten möchten, können Sie die neu hinzugefügte CANCEL_AND_REENQUEUE verwenden, die mit REPLACE identisch ist. (I985ed, b/219446409)
  • Definieren Sie eine SchedulingExceptionHandler, um Planungsausnahmen abzufangen. (I033eb)
  • Inline-Hilfsprogramme für OneTimeWorkRequest und PeriodicWorkRequest wurden von androidx.work:work-runtime-ktx nach androidx.work:work-runtime verschoben (I0010f, b/209145335)

Fehlerkorrekturen

  • @RequiresPermission wurde APIs hinzugefügt, für die ab SDK 33 die Berechtigung POST_NOTIFICATIONS benötigt wird. (Ie542e, b/238790278)

Version 2.8.0-alpha02

6. April 2022

androidx.work:work-*:2.8.0-alpha02 wird freigegeben. Version 2.8.0-alpha02 enthält diese Commits.

API-Änderungen

  • Einschränkungen können jetzt direkt anstelle des Builders erstellt werden, was für Kotlin-Nutzer praktisch ist. (Idc390, b/137568653)
  • Es besteht jetzt die Möglichkeit zu prüfen, ob WorkManager initialisiert wurde. Außerdem wurde eine neue getConfiguration() API für Bibliotheksentwickler hinzugefügt, um die Konfiguration abzurufen, mit der WorkManager initialisiert wurde. (I6eff3, b/212300336)

Version 2.8.0-alpha01

12. Januar 2022

androidx.work:work-*:2.8.0-alpha01 wird freigegeben. Version 2.8.0-alpha01 enthält diese Commits.

API-Änderungen

  • Die Hilfsmethoden WorkQuery.fromStates, WorkQuery.fromUniqueWorkNames und WorkQuery.fromTags wurden hinzugefügt, um WorkQuery direkt zu erstellen. (If48f2, b/199919736)
  • Es wurden experimentelle BuildCompat-Methoden für zukünftige SDKs hinzugefügt (Iafd82, b/207528937)
  • getForegroundInfo zu Worker hinzufügen. (Ic1ead)
  • Die Hilfsmethoden WorkQuery.fromIds zum direkten Erstellen von WorkQuery-IDs wurden hinzugefügt. (Ie5bdf, b/199919736)
  • In RxWorker gibt es jetzt setForeground, die Completable zurückgibt, die anstelle von setForegroundInfoAsync, die ListenableFuture zurückgibt, verwendet werden kann. (I85156)
  • In RxWorker für RxJava 2 gibt es jetzt getForegroundInfo, die Single zurückgibt, die anstelle von getForegroundInfoAsync verwendet werden kann, die ListenableFuture zurückgibt. (I21c91, b/203851459)
  • In RxWorker für RxJava 3 gibt es jetzt getForegroundInfo, das Single zurückgibt, das anstelle von getForegroundInfoAsync verwendet werden kann, das ListenableFuture zurückgibt. (I1ca8a)
  • In RxWorker gibt es jetzt setForeground, die Completable zurückgibt, die anstelle von setForegroundInfoAsync, die ListenableFuture zurückgibt, verwendet werden kann. (I992a3, b/203851459)

Fehlerkorrekturen

  • Leiten Sie Stornierungen in der CoroutineScope an die ListenableFuture weiter, wenn Sie suspendCancellableCoroutine verwenden. (I77e63)

Version 2.7

Version 2.7.1

17. November 2021

androidx.work:work-*:2.7.1 wird freigegeben. Version 2.7.1 enthält diese Commits.

Fehlerkorrekturen

  • Stornierungen in CoroutineScope werden an ListenableFuture weitergegeben, wenn suspendCancellableCoroutine verwendet wird. (I77e63)
  • Eine Ausnahme wird sofort ausgegeben, wenn verzögerte Arbeitsanfragen als beschleunigt markiert werden. bef1762

Version 2.7.0

13. Oktober 2021

androidx.work:work-*:2.7.0 wird freigegeben. Version 2.7.0 enthält diese Commits.

Wichtige Änderungen seit Version 2.6.0

  • WorkManager führt eine neue WorkRequest.Builder.setExpedited(...) API ein, um Einschränkungen von Diensten im Vordergrund in Android 12 zu beheben.

  • Wenn Sie setExpedited(...) verwenden, delegiert WorkManager ab Android 12 beschleunigte Jobs in JobScheduler. Bei früheren Android-Versionen wird gleichzeitig Abwärtskompatibilität bereitgestellt, indem ein Dienst im Vordergrund zugewiesen wird.

Version 2.7.0-rc01

29. September 2021

androidx.work:work-*:2.7.0-rc01 wird freigegeben. Version 2.7.0-rc01 enthält diese Commits.

Diese Version ist mit androidx.work:work-*:2.7.0-beta01 identisch.

Version 2.7.0-beta01

1. September 2021

androidx.work:work-*:2.7.0-beta01 wird freigegeben. Version 2.7.0-beta01 enthält diese Commits.

Neue Funktionen

  • Reduzieren Sie SQLite-Konflikte mit mehreren Prozessen bei der Initialisierung von WorkManager.

API-Änderungen

  • Entferne @ExperimentalExpeditedWork APIs, da die zugrunde liegenden Plattform-APIs für Android 12 (S) stabil sind. (aosp/1792806)

Fehlerkorrekturen

  • Geben Sie eine bessere Fehlermeldung für beschleunigte Worker an, die getForegroundInfoAsync() nicht implementieren. (aosp/1809376)

Version 2.7.0-alpha05

21. Juli 2021

androidx.work:work-*:2.7.0-alpha05 wird freigegeben. Version 2.7.0-alpha05 enthält diese Commits.

Diese Version enthält auch Fehlerkorrekturen aus der WorkManager-Version 2.6.0-beta02.

Version 2.7.0-alpha04

2. Juni 2021

androidx.work:work-*:2.7.0-alpha04 wird freigegeben.

Diese Version enthält auch die Änderungen gegenüber dem Release 2.6.0-beta01.

API-Änderungen

Fehlerkorrekturen

  • Wenn beschleunigte Aufträge verschoben werden, werden sie nicht mehr beschleunigt. Sie werden zu regulären Jobs.

Version 2.7.0-alpha03

21. April 2021

androidx.work:work-*:2.7.0-alpha03 wird freigegeben. Version 2.7.0-alpha03 enthält diese Commits.

Neue Funktionen

  • Von WorkManager 2.6.0-alpha02: Fügt Unterstützung für Worker hinzu, die in jedem Prozess ausgeführt werden können. (Iaf200)

  • Aus WorkManager 2.6.0-alpha02: RemoteCoroutineWorker wurde hinzugefügt. Dabei handelt es sich um eine Implementierung von RemoteListenableWorker, die an einen Remote-Prozess gebunden werden kann. (I30578)

API-Änderungen

Version 2.7.0-alpha02

10. März 2021

androidx.work:work-*:2.7.0-alpha02 wird freigegeben. Version 2.7.0-alpha02 enthält diese Commits.

Fehlerkorrekturen

  • Mache die Veränderlichkeit von PendingIntent explizit, um einen Absturz bei der Ausrichtung auf Android 12 zu beheben. (b/180884673)

Version 2.7.0-alpha01

18. Februar 2021

androidx.work:work-*:2.7.0-alpha01 wird freigegeben. Version 2.7.0-alpha01 enthält diese Commits.

Neue Funktionen

  • WorkManager führt eine neue WorkRequest.Builder.setExpedited(...) API ein, um die Einschränkungen für Dienste im Vordergrund in Android 12 zu berücksichtigen.

    Anwendungen können keinen Dienst im Vordergrund mehr starten, wenn sie im Hintergrund ausgeführt werden. Um lang andauernde Aufgaben, die zuvor an den Lebenszyklus eines Diensts im Vordergrund gebunden waren, besser zu unterstützen, können Anwendungen daher WorkRequests als beschleunigt kennzeichnen.

    Diese API ist ein Ersatz für die setForegroundAsync(...) und setForeground(...) APIs, die eingestellt wurden.

    Bei Verwendung von setExpedited(...) delegiert WorkManager beschleunigte Jobs in JobScheduler ab Android 12. Gleichzeitig wird Abwärtskompatibilität auf früheren Android-Versionen bereitgestellt, indem an Dienste im Vordergrund delegiert wird.

API-Änderungen

  • Unterstützung für schnellere WorkRequests hinzufügen.

Version 2.6.0

Version 2.6.0

1. September 2021

androidx.work:work-*:2.6.0 wird freigegeben. Version 2.6.0 enthält diese Commits.

Wichtige Änderungen seit Version 2.5.0

  • WorkManager verwendet jetzt androidx.startup, um WorkManager zu initialisieren. Wenn du in der Vergangenheit die Verwendung von tools:node="remove" ContentProvider zum Initialisieren von WorkManager verwendet hast, musst du stattdessen so vorgehen.

    <provider
        android:name="androidx.startup.InitializationProvider"
        android:authorities=\"${applicationId}.androidx-startup"
        android:exported="false"
        tools:node=\"merge">
        <!-- If you are using androidx.startup to initialize other components -->
        <meta-data
            android:name="androidx.work.WorkManagerInitializer"
            android:value="androidx.startup"
            tools:node="remove" />
     </provider>
    
    <!-- If you want to disable android.startup completely. -->
     <provider
                android:name="androidx.startup.InitializationProvider"
                android:authorities="${applicationId}.androidx-startup"
                tools:node="remove" />
    
  • Worker werden in beliebigen Prozessen ausgeführt. (Iaf200)

  • Ein RemoteCoroutineWorker wurde hinzugefügt. Das ist eine Implementierung von RemoteListenableWorker, die eine Bindung an einen Remote-Prozess herstellen kann. (I30578)

Version 2.6.0-rc01

4. August 2021

androidx.work:work-*:2.6.0-rc01 wird freigegeben. Version 2.6.0-rc01 enthält diese Commits.

Diese Version ist mit androidx.work:work-*:2.6.0-beta02 identisch.

Version 2.6.0-beta02

21. Juli 2021

androidx.work:work-*:2.6.0-beta02 wird freigegeben. Version 2.6.0-beta02 enthält diese Commits.

Fehlerkorrekturen

  • Die Bindung zwischen RemoteWorkManager und RemoteWorkManagerService wird jetzt korrekt aufgehoben. Dadurch kann RemoteWorkManagerService ordnungsgemäß bereinigt werden. aosp/1730694
  • Die Bindung zwischen RemoteListenableWorker und RemoteWorkerService wird jetzt korrekt aufgehoben. Dadurch kann RemoteWorkerService ordnungsgemäß bereinigt werden. aosp/1743817
  • ForceStopRunnable wird jetzt nur noch im primären Anwendungsprozess ausgeführt. Dies ist eine Optimierung, mit der Ressourcenkonflikte für Anwendungen vermieden werden, die mehrere Prozesse verwenden. aosp/1749180, aosp/1761729

Version 2.6.0-beta01

2. Juni 2021

androidx.work:work-*:2.6.0-beta01 wird freigegeben. Version 2.6.0-beta01 enthält diese Commits.

Diese Version enthält einige kleinere Verbesserungen der Dokumentation. Der Release ist weitgehend identisch mit 2.6.0-alpha02.

Version 2.6.0-alpha02

21. April 2021

androidx.work:work-*:2.6.0-alpha02 wird freigegeben. Version 2.6.0-alpha02 enthält diese Commits.

Neue Funktionen

  • Bietet Unterstützung für Worker, die in beliebigen Prozessen ausgeführt werden können. (Iaf200)

  • Ein RemoteCoroutineWorker wurde hinzugefügt. Dies ist eine Implementierung von RemoteListenableWorker, die an einen Remote-Prozess gebunden werden kann. (I30578)

API-Änderungen

  • Die Netzwerkeinschränkung TEMPORARILY_UNMETERED wird jetzt unterstützt. (I08d5e)
  • Multi-Prozess-Worker-Unterstützung für setProgressAsync(). (Ib6d08)
  • Machen Sie WorkManagerInitializer öffentlich, damit andere androidx.startup.Initializers diese als Abhängigkeiten verwenden können. (I5ab11)

Version 2.6.0-alpha01

24. März 2021

androidx.work:work-*:2.6.0-alpha01 wird freigegeben. Version 2.6.0-alpha01 enthält diese Commits.

Neue Funktionen

  • WorkManager verwendet jetzt androidx.startup, um WorkManager zu initialisieren. Zuvor wurde diese Änderung von androidx.work.impl.WorkManagerInitializer vorgenommen. (aosp/1608813)

    Wenn Sie in der Vergangenheit tools:node="remove" ContentProvider zum Initialisieren des Prozesslebenszyklus verwendet haben, müssen Sie stattdessen so vorgehen.

     <provider
        android:name="androidx.startup.InitializationProvider"
        android:authorities=\"${applicationId}.androidx-startup"
        android:exported="false"
        tools:node=\"merge">
        <!-- If you are using androidx.startup to initialize other components -->
        <meta-data
            android:name="androidx.work.impl.WorkManagerInitializer"
            android:value="androidx.startup"
            tools:node="remove" />
     </provider>
    

    (oder)

     <!-- If you want to disable android.startup completely. -->
     <provider
        android:name="androidx.startup.InitializationProvider"
        android:authorities="${applicationId}.androidx-startup"
        tools:node="remove">
     </provider>
    

API-Änderungen

  • Füge eine Result.getOutputData() API hinzu, die den outputData von ListenableWorker zurückgibt. (Ie51e3)

Fehlerkorrekturen

  • Fügen Sie eine Problemumgehung für einen OEM-Fehler hinzu, der dazu führt, dass bei Verwendung von AlarmManager APIs ein SecurityException ausgegeben wird. (aosp/1587518)

Version 2.5.0

Version 2.5.0

27. Januar 2021

androidx.work:work-*:2.5.0 wird freigegeben. Version 2.5.0 enthält diese Commits.

Wichtige Änderungen seit Version 2.4.0

  • Ein neues :work:work-multiprocess-Artefakt für Apps, die mehrere Prozesse verwenden. Dies führt zu Leistungssteigerungen, da die Planung von Arbeitsanfragen in einem einzigen Prozess vereinheitlicht wird.
    • Wenn Sie work-multiprocess verwenden möchten, definieren Sie eine Abhängigkeit von: implementation "androidx.work:work-multiprocess:2.5.0"
    • Legen Sie mit Configuration.Builder.setDefaultProcessName(String) einen primären Prozess fest.
    • Wenn Sie work-multiprocess verwenden, sollten Sie Ihre WorkRequests auch mit RemoteWorkManager verwalten. RemoteWorkManager wendet sich immer an den zuständigen Prozess. Der Prozess-Planer wird auch im vorgesehenen Prozess ausgeführt.
  • Manchmal kann ActivityManager die JobService-Instanz nicht instanziieren, um einen Job zu starten. Dies führt dazu, dass der zugrunde liegende Job aufgrund eines Plattformfehlers ohne Meldung gelöscht wird. WorkManager sorgt jetzt dafür, dass für jede einzelne WorkRequest Ersatzjobs vorhanden sind, wenn eine Application durch den Abgleich von Jobs initialisiert wird. Dies verbessert die Zuverlässigkeit der Jobausführung erheblich. (b/172475041, aosp/1489577)
  • WorkManager begrenzt das Datenbankwachstum, indem die Pufferdauer reduziert wird, die WorkRequests nach Abschluss eines WorkRequest-Vorgangs verfolgt werden. Die Dauer betrug zuvor 7 Tage. Sie wurde auf 1 Tag + die Dauer von keepResultsForAtLeast reduziert. (aosp/1419708)
  • TestListenableWorkerBuilder unterstützt jetzt die reifizierte Klasse, die ListenableWorker erweitert, um das Testen zu vereinfachen. (aosp/1443299, b/169787349)
  • Der WorkManager Inspector ist jetzt bei Verwendung von Android Studio Arctic Fox verfügbar.

Version 2.5.0-rc01

13. Januar 2021

androidx.work:work-*:2.5.0-rc01 wird freigegeben. Version 2.5.0-rc01 enthält diese Commits.

Fehlerkorrekturen

  • Es wurde ein Fehler behoben, bei dem getWorkInfosLiveData nicht korrekt ungültig gemacht wurde, nachdem Entitäten bei Verwendung der WorkQuery-basierten API aktualisiert wurden. (aosp/1540566, b/173769028)
  • Es wurde ein Fehler behoben, bei dem Datenbanktransaktionen in einigen seltenen Fällen nicht als erfolgreich markiert wurden. Dies führt bei einigen Motorola-Geräten zu Problemen. (aosp/1535368, b/175944460)
  • Es wurde ein Fehler behoben, durch den NoSuchElementExceptions beim Aufheben der Bindung an einen inaktiven Prozess ignoriert wurden. (aosp/1530589)
  • Verbessern Sie ConstraintTrackingWorker so, dass ein ListenableWorker nur beendet wird, wenn er nicht bereits beendet wurde. (aosp/1496844, b/172946965)
  • Aktualisieren der androidx.work-Bibliotheken für Java 8 (Ibd2f2)

Version 2.5.0-beta02

2. Dezember 2020

androidx.work:work-*:2.5.0-beta02 wird freigegeben. Version 2.5.0-beta02 enthält diese Commits.

Fehlerkorrekturen

  • Es wurde ein Fehler in androidx.work:work-multiprocess behoben, bei dem WorkManager den aufrufenden Thread versehentlich blockierte, wenn er versuchte, sich an den festgelegten Prozess zu binden. (aosp/1475538)
  • Es wurde ein Fehler behoben, bei dem PeriodicWorkRequest-Werte nicht richtig abgeglichen wurden. (b/172475041, aosp/1489577)
  • Es wurde eine Problemumgehung für einen Plattformfehler hinzugefügt, der beim Beenden des Diensts im Vordergrund bei Verwendung der setForeground* APIs aufgetreten ist. (b/170924044, aosp/1489901)

Version 2.5.0-beta01

28. Oktober 2020

androidx.work:work-*:2.5.0-beta01 wird freigegeben. Version 2.5.0-beta01 enthält diese Commits.

Neue Funktionen

  • WorkManager drosselt automatisch die Anzahl der WorkRequests, die vom laufenden Planer aufgenommen werden können. Die Anfragen werden weiterhin in FIFO-Reihenfolge ausgeführt. (aosp/1455228)
  • WorkManager versucht eine Wiederherstellung, wenn sich der Datenspeicher der Anwendung in einem fehlerhaften Zustand befindet. (aosp/1463103)

Fehlerkorrekturen

  • Wenn ListenableWorkers unterbrochen werden, markieren Sie sie sofort als ENQUEUED, damit sie später verschoben werden können. (aosp/1455618, b/170273988)

Version 2.5.0-alpha03

14. Oktober 2020

androidx.work:work-*:2.5.0-alpha03 wird freigegeben. Version 2.5.0-alpha03 enthält diese Commits.

API-Änderungen

  • TestListenableWorkerBuilder und TestWorkerBuilder verwenden keine Rohdatentypen. (I883ad, b/169787349)

Fehlerkorrekturen

  • Verwenden Sie ApplicationInfo, um den Namen des Standardanwendungsprozesses zu ermitteln. (b/168716641 und aosp/1429950)
  • Korrigieren Sie die Sichtbarkeitsregeln für RemoteWorkManager und RemoteWorkContinuation. Diese APIs sind nicht mehr als @Restricted gekennzeichnet. (aosp/1432091)
  • Korrigieren Sie die Proguard-Regeln für :work:work-multiprocess. (aosp/1432091)
  • Verbessern Sie den Benachrichtigungslebenszyklus für lang andauernde Aufgaben, die an einen Dienst im Vordergrund gebunden sind. (b/168502234, aosp/1431331)

Version 2.5.0-alpha02

16. September 2020

androidx.work:work-*:2.5.0-alpha02 wird freigegeben. Version 2.5.0-alpha02 enthält diese Commits.

Neue Funktionen

  • Fügen Sie WorkQuery eine API hinzu, um ids zum Abfragen von WorkInfos verwenden zu können. (aosp/1412372, b/157335295)
  • WorkManager unterstützt besser Anwendungen, die mehrere Prozesse mit einem neuen Artefakt (androidx.work:work-multiprocess:*) verwenden. Dieses neue Artefakt hilft, einige Probleme zu lösen, die bei großen Apps auftreten, darunter:
    • WorkManager muss in der Regel bei jedem Anwendungsprozess initialisiert werden. Das ist nicht großartig, da es vermehrt SQLite-Konflikte gibt, was wiederum andere Probleme verursacht. WorkManager verfügt jetzt über neue APIs, mit denen mithilfe von Configuration#setDefaultProcessName(processName) ein primärer Anwendungsprozess festgelegt werden kann. processName ist ein voll qualifizierter Prozessname und hat das Format packageName:processName (z.B. com.example:remote).
    • Neue APIs: RemoteWorkManager und RemoteWorkContinuation für enqueue-, cancel- und query-Arbeitsanfragen. Diese APIs enthalten keine LiveData-Varianten, um SQLite-Konflikte zwischen mehreren Prozessen zu vermeiden. Alle Aufrufe an enqueue, cancel und query werden mithilfe von AIDL an einen primary-Anwendungsprozess weitergeleitet und geben eine flüssige ListenableFuture zurück. (aosp/1392657, aosp/1411210, aosp/1412215, aosp/1417713)

API-Änderungen

  • WorkManager bereinigt nun abgeschlossene WorkRequests, die keine unvollständigen Abhängigkeiten haben, nun aggressiver. Die Pufferdauer wurde von 7 Tagen zu 1 Tag geändert. (aosp/1419708)

Fehlerkorrekturen

  • WorkManager gleicht Jobs jetzt proaktiv ab, sodass WorkRequest- und JobScheduler-Jobs synchronisiert werden, wenn WorkManager initialisiert wird. (aosp/1412794, b/166292069)

Version 2.5.0-alpha01

19. August 2020

androidx.work:work-*:2.5.0-alpha01 wird freigegeben. Version 2.5.0-alpha01 enthält diese Commits.

Neue Funktionen

  • Änderungen an internen APIs, durch die wir in Zukunft bessere Tools mit WorkManager bereitstellen können. Wir halten Sie auf dem Laufenden.

Fehlerkorrekturen

  • SecurityException-Fehler beim Erfassen des Netzwerkstatus auf einigen Geräten verarbeiten (aosp/1396969)

Externer Beitrag

  • Probleme mit der Dokumentation für ArrayCreatingInputMerger von Zac Sweers (GitHub/43) wurden behoben.

Version 2.4.0

Version 2.4.0

22. Juli 2020

androidx.work:work-*:2.4.0 wird freigegeben. Version 2.4.0 enthält diese Commits.

Wichtige Änderungen seit Version 2.3.0

  • Der In-Process-Planer von WorkManager ist jetzt leistungsfähiger. Bisher hat der laufende Scheduler nur die Ausführung von Aufgaben berücksichtigt, die nicht verzögert waren und deren Einschränkungen erfüllt wurden. Jetzt verfolgt der laufende Planer WorkRequests, die in Zukunft ausgeführt werden könnten, einschließlich PeriodicWorkRequests. Für den laufenden Scheduler gelten auch keine Zeitplanlimits (sie sind aber weiterhin auf die Größe des von WorkManager verwendeten Executor) beschränkt. Das bedeutet, dass die Anwendung jetzt wesentlich mehr WorkRequests ausführen kann, wenn sie im Vordergrund ausgeführt wird. Für die Verwaltung der Ausführung verzögerter Arbeiten im Vordergrund wurde außerdem ein neues konfigurierbares RunnableScheduler-Objekt in WorkManager eingeführt. (aosp/1185778)
  • WorkManager unterstützt jetzt RxJava 3. Für die Verwendung von RxJava 3 sollten Sie die folgende Abhängigkeit einbeziehen: implementation "androidx.work:work-rxjava3:2.4.0". (aosp/1277904)
  • Es wurde die Möglichkeit hinzugefügt, WorkInfo-Werte mithilfe von WorkQuery abzufragen. Dies ist nützlich, wenn Entwickler WorkInfos mithilfe einer Kombination mehrerer Attribute abfragen möchten. Weitere Informationen findest du unter WorkQuery.Builder.fromStates(...), WorkQuery.Builder. fromTags(...) oder WorkQuery.Builder.fromUniqueWorkNames(...). (aosp/1253230, b/143847546)
  • Fügen Sie die Möglichkeit hinzu, Diagnosedaten von WorkManager anzufordern:

    adb shell am broadcast -a "androidx.work.diagnostics.REQUEST_DIAGNOSTICS" -p "<your_app_package_name>"
    

    Hier finden Sie viele nützliche Informationen, darunter:

    • WorkRequests, die in den letzten 24 Stunden abgeschlossen wurden.
    • Derzeit ausgeführte WorkRequests
    • Geplante WorkRequests. (aosp/1235501)
  • Fügen Sie ExistingWorkPolicy.APPEND_OR_REPLACE hinzu. Das ähnelt APPEND, ersetzt jedoch eine Kette, bei der die Voraussetzungen abgebrochen wurden oder nicht erfüllt wurden. (b/134613984, aosp/1199640)

  • Möglichkeit zum Hinzufügen eines benutzerdefinierten RunnableScheduler bereitstellen, um WorkRequests zu verfolgen, die in Zukunft ausgeführt werden müssen. Dies wird vom laufenden Planer verwendet. (aosp/1203944)

  • Bei Verwendung von DelegatingWorkerFactory wird das dynamische Hinzufügen von Factorys zum Delegieren unterstützt. (b/156289105, aosp/1309745)

  • Richten Sie das Tracking für BATTERY_NOT_LOW-Einschränkungen stärker mit der Plattform aus. (aosp/1312583)

  • Der Prozess-Planer verwendet jetzt bessere APIs, um den Namen des Prozesses zu bestimmen. Dies ist nützlich, um Anwendungen, die mehrere Prozesse verwenden, besser zu unterstützen. (aosp/1324732)

  • Neue Lint-Regeln, die Folgendes erzwingen:

    • Verwendung des rechten foregroundServiceType bei Verwendung von setForegroundAsync() APIs. (b/147873061 und aosp/1215915)
    • Angeben von JobScheduler-IDs, die WorkManager verwenden soll, wenn JobService APIs direkt verwendet werden. aosp/1223567
    • Es wurde eine neue Lint-Regel hinzugefügt, die dafür sorgt, dass ListenableWorkerImplementierungen jetzt den Wert public haben, wenn die standardmäßige WorkerFactory verwendet wird. (aosp/1291262)
  • Aufrufe an setForegroundAsync(), die nicht vor Abschluss von ListenableWorker abgeschlossen werden, werden jetzt über ein IllegalStateException auf der zurückgegebenen ListenableFuture signalisiert. (aosp/1262743)

  • Es wurde ein Fehler behoben, bei dem ForegroundService nicht angehalten wurde, nachdem eine Worker im Vordergrund unterbrochen wurde. (b/155579898 und aosp/1302153)

  • Fehler behoben, bei dem WorkManager versucht, mehrere Instanzen einer Worker auszuführen, die an einen Dienst im Vordergrund gebunden ist (b/156310133, aosp/1309853)

Version 2.4.0-rc01

24. Juni 2020

androidx.work:work-*:2.4.0-rc01 wird freigegeben. Version 2.4.0-rc01 enthält diese Commits.

Fehlerkorrekturen

  • Der Prozess-Planer verwendet jetzt bessere APIs, um den Namen des Prozesses zu bestimmen. Dies ist nützlich, um Anwendungen, die mehrere Prozesse verwenden, besser zu unterstützen. (aosp/1324732)

Version 2.4.0-beta01

20. Mai 2020

androidx.work:work-gcm:2.4.0-beta01, androidx.work:work-runtime:2.4.0-beta01, androidx.work:work-runtime-ktx:2.4.0-beta01, androidx.work:work-rxjava2:2.4.0-beta01 und androidx.work:work-testing:2.4.0-beta01 wurden veröffentlicht. Version 2.4.0-beta01 enthält diese Commits.

Fehlerkorrekturen

  • Es wurde ein Fehler behoben, bei dem ForegroundService nicht angehalten wurde, nachdem eine Worker im Vordergrund unterbrochen wurde. (b/155579898 und aosp/1302153)
  • Fehler behoben, bei dem WorkManager versucht, mehrere Instanzen einer Worker auszuführen, die an einen Dienst im Vordergrund gebunden sind (b/156310133, aosp/1309853)
  • Bei Verwendung von DelegatingWorkerFactory wird das dynamische Hinzufügen von Factorys zum Delegieren unterstützt. (b/156289105 und aosp/1309745)
  • Richten Sie das Tracking für BATTERY_NOT_LOW-Einschränkungen stärker mit der Plattform aus. (aosp/1312583)

Version 2.4.0-alpha03

29. April 2020

androidx.work:work-*:2.4.0-alpha03 wird freigegeben. Version 2.4.0-alpha03 enthält diese Commits.

Neue Funktionen

  • WorkManager unterstützt jetzt RxJava 3. Für die Verwendung von RxJava 3 sollten Sie die folgende Abhängigkeit einbeziehen: implementation "androidx.work:work-rxjava3:2.4.0-alpha03". (aosp/1277904)
  • Es wurde eine neue Lint-Regel hinzugefügt, die dafür sorgt, dass ListenableWorkerImplementierungen jetzt den Wert public haben, wenn die standardmäßige WorkerFactory verwendet wird. (aosp/1291262)

API-Änderungen

  • Wenn setProgressAsync() aufgerufen wird, nachdem die Ausführung einer ListenableWorker abgeschlossen wurde, wird jetzt ein Exception über die ListenableFuture signalisiert. (aosp/1285494)
  • WorkQuery.Builder ist jetzt als final markiert. (aosp/1275037)
  • Die WorkQuery.Builder-Factory-Methoden withStates, withTags und withUniqueWorkNames wurden in fromStates, fromTags und fromUniqueWorkNames umbenannt. (aosp/1280287)

Fehlerkorrekturen

  • SecurityException-Werte werden beim Erfassen des Netzwerkstatus eines Geräts ignoriert. (b/153246136 und aosp/1280813)

Version 2.4.0-alpha02

1. April 2020

androidx.work:work-*:2.4.0-alpha02 wird freigegeben. Version 2.4.0-alpha02 enthält diese Commits.

Neue Funktionen

  • Eine neue Lint-Regel wurde hinzugefügt, die warnt, wenn WorkRequests sowohl Constraints.setRequiresCharging(...) als auch Constraints.setRequiresDeviceIdle(...) erfordert. Einige Geräte werden nie gleichzeitig aufgeladen und inaktiv. Solche Anfragen würden also seltener als erwartet ausgeführt werden. (aosp/1253840)

API-Änderungen

  • Es wurde die Möglichkeit hinzugefügt, WorkInfo-Werte mithilfe von WorkQuery abzufragen. Dies ist nützlich, wenn Entwickler WorkInfos mithilfe einer Kombination mehrerer Attribute abfragen möchten. Weitere Informationen findest du unter WorkQuery.Builder withStates(...), WorkQuery.Builder withTags(...) oder WorkQuery.Builder withUniqueWorkNames(...). (aosp/1253230, b/143847546)

  • Aufrufe an setForegroundAsync(), die nicht vor Abschluss von ListenableWorker abgeschlossen werden, werden jetzt über ein IllegalStateException auf der zurückgegebenen ListenableFuture signalisiert. (aosp/1262743)

Fehlerkorrekturen

  • Die Lint-Regel, die PeriodicWorkRequest s auf ungültige Intervalldauer prüft, wurde korrigiert. (aosp/1254846, b/152606442)

Version 2.4.0-alpha01

4. März 2020

androidx.work:work-*:2.4.0-alpha01 wird freigegeben. Version 2.4.0-alpha01 enthält diese Commits.

Neue Funktionen

  • Der In-Process-Planer von WorkManager ist jetzt leistungsfähiger. Bisher hat der Prozessplanungs-Planer nur die Ausführung von Aufgaben berücksichtigt, die nicht verzögert waren und deren Einschränkungen erfüllt wurden. Jetzt verfolgt der laufende Planer WorkRequests, die in der Zukunft ausgeführt werden könnten, einschließlich PeriodicWorkRequests. Der laufende Planer berücksichtigt außerdem keine Zeitplanlimits (ist aber auf die Größe der Executor beschränkt, die von WorkManager verwendet wird). Das bedeutet, dass die App jetzt wesentlich mehr WorkRequests ausführen kann, wenn sie im Vordergrund ausgeführt wird. (aosp/1185778)

  • Es ist jetzt möglich, Diagnosedaten über adb shell am broadcast -a "androidx.work.diagnostics.REQUEST_DIAGNOSTICS" -p "<your_app_package_name>" von WorkManager anzufordern. Hier finden Sie viele nützliche Informationen, darunter:

    • WorkRequests, die in den letzten 24 Stunden abgeschlossen wurden.
    • Derzeit ausgeführte WorkRequests
    • Geplante WorkRequests. (aosp/1235501)
  • Neue Lint-Regeln, die Folgendes erzwingen:

    • Verwendung des rechten foregroundServiceType bei Verwendung von setForegroundAsync() APIs. (b/147873061 und aosp/1215915)
    • Angeben von JobScheduler-IDs, die WorkManager verwenden soll, wenn JobService APIs direkt verwendet werden. (aosp/1223567)

API-Änderungen

  • Fügen Sie ExistingWorkPolicy.APPEND_OR_REPLACE hinzu. Das ähnelt APPEND, ersetzt aber eine Kette, die abgebrochene oder nicht erforderliche Voraussetzungen erfüllt. (b/134613984, aosp/1199640)

  • Möglichkeit zum Hinzufügen eines benutzerdefinierten RunnableScheduler bereitstellen, um WorkRequests zu erfassen, die in Zukunft ausgeführt werden müssen. Dies wird vom laufenden Planer verwendet. (aosp/1203944)

Fehlerkorrekturen

  • setProgress() in RxWorker wurde verworfen, da zuvor ein Single<Void> zurückgegeben wurde, was ein nicht möglicher Typ ist. Es wurde eine neue API-setCompletableProgress() hinzugefügt, die stattdessen ein Completable zurückgibt. Außerdem wurden neue Lint-Regeln hinzugefügt, die die Migration zu den neuen APIs vereinfachen. (b/150080946, aosp/1242665)

Version 2.3.4

Version 2.3.4

18. März 2020

androidx.work:work-*:2.3.4 wird freigegeben. Version 2.3.4 enthält diese Commits.

Fehlerkorrekturen

  • Es wurde ein Fehler behoben, der dazu führte, dass nach Überschreiten des 10-minütigen Ausführungsfensters mehrere Instanzen eines lang andauernden Workers ausgeführt wurden. (aosp/1247484, b/150553353)
  • Das Problem mit dem Lint IssueRegistry von WorkManager wurde behoben. Vielen Dank an @ZacSweers von Slack für den Beitrag. (aosp/1217923)

Version 2.3.3

Version 2.3.3

4. März 2020

androidx.work:work-*:2.3.3 wird freigegeben. Version 2.3.3 enthält diese Commits.

Fehlerkorrekturen

  • Ein Fehler wurde behoben, bei dem eine Worker-Verbindung nicht korrekt neu geplant wurde, wenn sie unterbrochen wurde. (b/150325687 und aosp/1246571)

Version 2.3.2

Version 2.3.2

19. Februar 2020

androidx.work:work-*:2.3.2 werden freigegeben. Version 2.3.2 enthält diese Commits.

Fehlerkorrekturen

  • Es wurde ein Problem behoben, bei dem WorkManager in seltenen Fällen das Limit von 100 Jobs in JobScheduler überschreitet. (aosp/1226859, b/149092520)
  • Fehlerkorrektur für eine Race-Bedingung in ConstraintControllers. (aosp/1220100)
  • Der Lebenszyklus des Diensts im Vordergrund der Verwaltung für Worker mit langer Ausführungszeit wurde verbessert. (aosp/1226295)
  • Die Verwaltung der Kündigung von Benachrichtigungen für lang andauernde Worker nach der Kündigung von Workern wurde verbessert. (aosp/1228346)

Version 2.3.1

Version 2.3.1

5. Februar 2020

androidx.work:work-*:2.3.1 wird freigegeben. Version 2.3.1 enthält diese Commits.

Fehlerkorrekturen

  • Verwalten Sie den Lebenszyklus von Notifications für Workers mit langer Ausführungszeit, die ausgeführt werden, wenn eine Service im Vordergrund aktiv ist. (aosp/1218539, b/147249312)
  • WorkManager hängt jetzt von androidx.sqlite:sqlite-framework:2.1.0 (stabile Version) ab. (aosp/1217729)
  • Es wurden Lint-Regeln hinzugefügt, damit bei Verwendung von foregroundServiceTypes in ForegroundInfo eine foregroundServiceType in der AndroidManifest.xml angegeben wird. (aosp/1214207, b/147873061)

Version 2.3.0

Version 2.3.0

22. Januar 2020

androidx.work:work-*:2.3.0 wurde ohne Änderungen seit 2.3.0-rc01 veröffentlicht. Version 2.3.0 enthält diese Commits.

Wichtige Änderungen seit Version 2.2.0

  • Support für lang andauernde oder wichtige Aufgaben über ListenableWorker#setForegroundAsync().
  • Unterstützung für Worker-Fortschritt über ListenableWorker#setProgressAsync().
  • WorkManager bündelt jetzt zusätzliche Lint-Regeln als Teil der Bibliothek, sodass Fehler frühzeitig erkannt werden.

Version 2.3.0-rc01

8. Januar 2020

androidx.work:work-*:2.3.0-rc01 wird freigegeben. Version 2.3.0-rc01 enthält diese Commits.

Dieser Release ist identisch mit 2.3.0-beta02

Fehlerkorrekturen

  • Das Artefakt work-testing definiert jetzt eine api-Abhängigkeit von work-runtime-ktx. (aosp/1194410)

Version 2.3.0-beta02

18. Dezember 2019

androidx.work:work-*:2.3.0-beta02 wird freigegeben. Version 2.3.0-beta02 enthält diese Commits.

Neue Funktionen

  • Es wurde eine bessere Fehlermeldung für nicht wiederherstellbare SQLite-Ausnahmen hinzugefügt. (aosp/1185777)
  • Eine Lint-Regel wurde hinzugefügt, die dafür sorgt, dass der Contentanbieter androidx.work.impl.WorkManagerInitializer aus dem AndroidManifest.xml entfernt wird, wenn die On-Demand-Initialisierung verwendet wird. (aosp/1167007)
  • Eine Lint-Warnung wurde hinzugefügt, wenn enqueue() für PeriodicWorkRequest anstelle von enqueueUniquePeriodicWork() verwendet wird. (aosp/1166032)

API-Änderungen

  • Für ForegroundInfo musst du jetzt die notificationId angeben, die bei der Verwendung von ListenableWorker.setForegroundAsync() verwendet werden soll. Das ist eine funktionsgefährdende Änderung. Auf diese Weise können Sie mehrere Workers mit langer Ausführungszeit parallel ausführen. Mit WorkManager lassen sich außerdem die Lebensdauer der bereitgestellten Notifications besser verwalten. (b/145473554, aosp/1181208, asop/1181216, asop/1183577)

Fehlerkorrekturen

  • Ein Fehler in der AlarmManager-Implementierung wurde behoben, bei dem Alarme nicht korrekt bereinigt wurden. (aosp/1156444)
  • Es wurde ein Fehler behoben, bei dem eine leere Liste mit WorkRequests dazu führte, dass eine falsche WorkContinuation-Kette erstellt wurde. (b/142835274, aosp/1157051)

Abhängigkeitsänderungen

  • WorkManager verwendet jetzt Room 2.2.2.

Version 2.3.0-beta01

20. November 2019

androidx.work:work-*:2.3.0-beta01 wird freigegeben. Version 2.3.0-beta01 enthält diese Commits.

Neue Funktionen

  • Es wurde eine neue Lint-Regel hinzugefügt, die Entwicklerfehler aufgrund einer falschen Implementierung von androidx.work.Configuration.Provider bei der On-Demand-Initialisierung verhindert. aosp/1164559

Version 2.3.0-alpha03

23. Oktober 2019

androidx.work:work-*:2.3.0-alpha03 wird freigegeben. Version 2.3.0-alpha03 enthält diese Commits.

Neue Funktionen

  • Die WorkManager.createCancelPendingIntent() API wurde hinzugefügt, mit der WorkRequests ganz einfach abgebrochen werden können, ohne dass eine weitere Komponente in der AndroidManifest.xml registriert werden muss. Mit dieser API lassen sich WorkRequests aus Notifications besonders einfach abbrechen. Wir gehen davon aus, dass dies mit den neuen APIs im Vordergrund in Version 2.3.0 gekoppelt sein wird.
  • Für WorkManager sind jetzt androidx.room:*:2.2.0 (stabile Version) erforderlich.

API-Änderungen

  • ForegroundInfo.getNotificationType() wurde in ForegroundInfo.getForegroundServiceType() umbenannt, um die Einheitlichkeit mit den zugrunde liegenden Plattform-APIs zu verbessern. (b/142729893, aosp/1143316)

Fehlerkorrekturen

  • Es wurde ein Fehler behoben, der durch einen unnötigen Aufruf von setTransactionSuccessful() außerhalb einer Transaktion verursacht wurde. Das passiert bei seltenen Migrationen. (b/142580433, aosp/1141737)

Version 2.3.0-alpha02

9. Oktober 2019

androidx.work:work-*:2.3.0-alpha02 wird freigegeben. Version 2.3.0-alpha02 enthält diese Commits.

Neue Funktionen

  • WorkManager unterstützt jetzt lang andauernde oder wichtige Aufgaben, die vom Betriebssystem aufrecht erhalten werden sollen. Weitere Informationen finden Sie unter ListenableWorker#setForegroundAsync() (oder CoroutineWorker#setForeground() für Kotlin). (aosp/1133636)

API-Änderungen

  • Die containsKey API in Data wurde in hasKeyWithValueOfType umbenannt. Die entsprechende Erweiterungsmethode in der ktx-Bibliothek wurde ebenfalls umbenannt. (b/141916545)

Fehlerkorrekturen

  • WorkManager funktioniert fair, wenn sich die Anzahl der in der Warteschlange enthaltenen WorkRequests den Planungslimits nähert. (aosp/1105766)
  • WorkManager ruft ListenableWorker#onStopped() nur dann auf, wenn die Arbeit noch nicht abgeschlossen wurde. (b/140055777)
  • WorkManager entfernt jetzt Informationen zum Fortschritt, wenn ein Mitarbeiter unterbrochen wird oder seinen Endzustand erreicht. (aosp/1114572)
  • Data bietet jetzt eine viel nützlichere toString()Darstellung. (b/140945323)
  • Data verfügt jetzt über eine bessere equals()-Methode. Außerdem wird deepEquals für Array-Typen unterstützt. (b/140922528)
  • WorkManager speichert jetzt die interne Datenbank und die Dateien mit den Einstellungen in einem Verzeichnis ohne Sicherungskopien. (b/114808216)

Version 2.3.0-alpha01

22. August 2019

androidx.work:work-*:2.3.September 5, 20190-alpha01 wird freigegeben. Die in dieser Version enthaltenen Commits finden Sie hier.

Neue Funktionen

  • ListenableWorker-Nutzer können den Fortschritt jetzt über die setProgressAsync() API festlegen. Außerdem wurde eine entsprechende suspend-ing-setProgress-API in CoroutineWorker und ein setProgress in RxWorker hinzugefügt, das einen Single<Void> zurückgibt. Mit diesen neuen APIs können Worker Fortschrittsinformationen über WorkInfo übertragen, für das eine entsprechende getProgress API vorhanden ist. (b/79481554)
  • Data hat eine containsKey() API, mit der geprüft werden kann, ob Eingabedaten in Workers Schlüssel mit dem erwarteten Typ enthalten. (b/117136838)
  • Data kann jetzt mit Data.toByteArray() und Data.fromByteArray() serialisiert werden. Beachten Sie, dass es für Data keine Versionsverwaltungsgarantien gibt. Sie sollten ihn daher nicht dauerhaft speichern oder für IPC zwischen Anwendungen verwenden. Sie können nur zwischen mehreren Prozessen derselben Anwendung verwendet werden.
  • Es wurde die Möglichkeit hinzugefügt, ein InputMergerFactory über Configuration.setInputMergerFactory anzugeben. (b/133273159)

API-Änderungen

  • WorkManager gibt eine Instanz von IllegalStateException aus, wenn WorkerFactory eine Instanz von ListenableWorker zurückgibt, die zuvor aufgerufen wurde. (b/139554406)
  • Dokumentationsaktualisierungen zur Stornierung von ListenableFuture und zum onStopped()-Callback in ListenableWorker. (b/138413671)

Fehlerkorrekturen

  • Der laufende Planer ignoriert jetzt WorkRequests mit der Einschränkung idle. Diese Anfragen werden jetzt nur noch von JobScheduler angenommen, wenn das Gerät tatsächlich idle ist. (aosp/1089779)
  • TestScheduler verwendet den angegebenen Executor jetzt korrekt für seinen internen Task-Executor in Tests. (aosp/1090749)

Version 2.2.0

Version 2.2.0

15. August 2019

androidx.work:work-*:2.2.0 wird freigegeben. Die in dieser Version enthaltenen Commits finden Sie hier.

Dieser Release ist mit androidx.work:work-*:2.2.0-rc01 identisch.

Wichtige Änderungen in Version 2.2.0 gegenüber Version 2.1.0

androidx.work:work-gcm:2.2.0 ist ein neues Maven-Artefakt, das die Verwendung von GCMNetworkManager als Planer unterstützt, wenn Google Play-Dienste für API-Level <= 22 verfügbar sind. Dies ist eine optionale Abhängigkeit, die bei älteren API-Versionen eine zuverlässigere und leistungsfähigere Hintergrundverarbeitung ermöglicht. Wenn deine App Google Play-Dienste verwendet, füge diese Abhängigkeit zu deiner Gradle-Datei hinzu, damit GCMNetworkManager automatisch unterstützt wird. Wenn die Play-Dienste nicht verfügbar sind, greift WorkManager auf älteren Geräten weiterhin auf AlarmManager zurück.

Version 2.2.0-rc01

30. Juli 2019

androidx.work:work-*:2.2.0-rc01 wird freigegeben. Die in dieser Version enthaltenen Commits finden Sie hier.

Fehlerkorrekturen

  • Es wurde ein Fehler in der AlarmManager-Implementierung behoben, der dazu führte, dass der Dienst vorzeitig heruntergefahren wurde und in seltenen Fällen zu einem RejectedExecutionException führte. (aosp/1092374) (b/138238197).
  • Es wurde eine Problemumgehung für ein NullPointerException hinzugefügt, wenn auf einigen Geräten JobScheduler APIs verwendet werden. (aosp/1091020) (b/138364061), (b/138441699)

Version 2.2.0-beta02

19. Juli 2019

androidx.work:work-*:2.2.0-beta02 wird freigegeben. Die in dieser Version enthaltenen Commits finden Sie hier.

Fehlerkorrekturen

  • Die unbeabsichtigte Jacquard-Abhängigkeit, die in 2.2.0-beta01 eingeführt wurde, wurde entfernt.

Version 2.2.0-beta01

17. Juli 2019

androidx.work:work-*:2.2.0-beta01 wird freigegeben. Die in dieser Version enthaltenen Commits finden Sie hier.

Neue Funktionen

  • androidx.work:work-gcm:2.2.0-beta01 ist ein neues Maven-Artefakt, das die Verwendung von GCMNetworkManager als Planer unterstützt, wenn Google Play-Dienste für API-Level <= 22 verfügbar sind. Dies ist eine optionale Abhängigkeit, die bei älteren API-Versionen eine zuverlässigere und leistungsstärkere Hintergrundverarbeitung ermöglicht. Wenn deine App Google Play-Dienste verwendet, füge diese Abhängigkeit zu deiner Gradle-Datei hinzu, damit GCMNetworkManager automatisch unterstützt wird. Wenn die Play-Dienste nicht verfügbar sind, greift WorkManager auf älteren Geräten weiterhin auf AlarmManager zurück.

Fehlerkorrekturen

  • Fehlerkorrektur für IllegalArgumentException beim Erfassen des Netzwerkstatus auf Nvidia Shield K1-Tablets. (aosp/1010188)

Version 2.1.0

Version 2.1.0

11. Juli 2019

androidx.work:work-*:2.1.0 wird freigegeben. Dieser Release ist mit androidx.work:work-*:2.1.0-rc01 identisch.

Wichtige Änderungen seit Version 2.0.1

  • work-runtime-ktx erfordert jetzt Java 8. Falls Probleme auftreten, können Sie dem build.gradle Folgendes hinzufügen: kotlinOptions { jvmTarget = "1.8" }
  • Neue On-Demand-Initialisierung für WorkManager, wodurch WorkManager nur erstellt wird, wenn darauf verwiesen wird. b/127497100 So richten Sie Ihr Projekt für die On-Demand-Initialisierung ein:
    1. Deaktivieren Sie den automatischen Initialisierer.
    2. Implementieren Sie Configuration.Provider für Ihr benutzerdefiniertes Application-Objekt.
    3. Ändern Sie alle Verweise von WorkManager.getInstance() in WorkManager.getInstance(Context). Im Rahmen dieser Änderung wurde WorkManager.getInstance() eingestellt. Es ist immer sicherer, die neue WorkManager.getInstance(Context)-Ersetzung aufzurufen, auch wenn du keine On-Demand-Initialisierung vornimmst.
  • PeriodicWorkRequest unterstützen jetzt anfängliche Verzögerungen. Sie können die Methode setInitialDelay für PeriodicWorkRequest.Builder verwenden, um eine anfängliche Verzögerung festzulegen. b/111404867
  • Es wurde die Möglichkeit hinzugefügt, mit DelegatingWorkerFactory an einen oder mehrere registrierte WorkerFactorys zu delegieren. b/131435993
  • Die von WorkManager verwendete Executor kann jetzt über Configuration.Builder.setTaskExecutor für die gesamte interne Buchhaltung angepasst werden.
  • Es wurde die Möglichkeit hinzugefügt, über die Einheiten testbare Worker- und ListenableWorker-Klassen mithilfe von TestWorkerBuilder und TestListenableWorkerBuilder im Artefakt work-testing zu erstellen.
    • Beachten Sie, dass work-testing Kotlin jetzt als Abhängigkeit abrufen kann und standardmäßig mehrere Kotlin-Erweiterungen enthält.
  • Anzahl der Ausführungsversuche zu WorkInfo hinzugefügt. b/127290461
  • Data-Typen können jetzt Byte und Bytearrays speichern und abrufen. Die maximale Größe von Data-Objekten wird dadurch NICHT geändert.
  • WorkManager hängt jetzt von Room 2.1.0 ab, wodurch einige Datenbankprobleme behoben werden sollten.

Version 2.1.0-rc01

27. Juni 2019

androidx.work:work-*:2.1.0-rc01 wird freigegeben. Die in dieser Version enthaltenen Commits finden Sie hier.

Fehlerkorrekturen

  • Es wurde ein Fehler behoben, der zum Absturz einer Anwendung führte, wenn Jobs mit JobScheduler ausgeführt wurden, während eine Sicherung ausgeführt wurde b/135858602.

Version 2.1.0-beta02

20. Juni 2019

androidx.work:work-*:2.1.0-beta02 wird freigegeben. Die in dieser Version enthaltenen Commits finden Sie hier.

Fehlerkorrekturen

  • TestListenableWorkerBuilder verwendet jetzt die korrekte WorkerFactory beim Erstellen von ListenableWorker-Instanzen. b/135275844
  • Ein Fehler wurde behoben, der zu Driften in den Ausführungsfenstern für WorkRequests aufgrund von Prozesstod führte. b/135272196

Version 2.1.0-beta01

13. Juni 2019

androidx.work:work-*:2.1.0-beta01 wird freigegeben. Die in dieser Version enthaltenen Commits finden Sie hier.

Fehlerkorrekturen

  • WorkManager hängt jetzt von Room 2.1.0 ab, wodurch einige Datenbankprobleme behoben werden sollten.
  • Einige Startdatenträger-E/A aus dem Hauptthread entfernt.
  • Ein potenzieller Deadlock beim Einschränkungs-Tracking wurde behoben. b/134361006
  • Vorbeugende Kündigung ungültiger Jobs, die WorkManager zugeordnet sind. b/134058261
  • Den JobScheduler APIs wurden einige defensive Aufrufe für fehlerhafte Geräte hinzugefügt.

Version 2.1.0-alpha03

5. Juni 2019

androidx.work:*:2.1.0-alpha03 wird freigegeben.

Fehlerkorrekturen

  • Die Dokumentation für PeriodicWorkRequests wurde verbessert.
  • WorkManagerTestInitHelper verwendet jetzt den korrekten Hintergrund-Executor für Tests.
  • SQLite-Probleme bei großen Transaktionen auf einigen Geräten wurden behoben. (b/130182503)
  • Die Abhängigkeiten von WorkManager sind jetzt detaillierter. (b/133169148)
  • OEM-spezifische Fehler bei der Implementierung von JobScheduler bei der Planung von Jobs mit WorkManager werden umgangen.
  • Verbesserungen im auf AlarmManager basierenden Planer bezüglich der Dienstlebensdauer, die zuvor seltene Abstürze verursachten. (b/133313734)

Version 2.1.0-alpha02

16. Mai 2019

WorkManager 2.1.0-alpha02 wird veröffentlicht. Diese Version enthält mehrere neue APIs.

API-Änderungen

  • PeriodicWorkRequest unterstützen jetzt anfängliche Verzögerungen. Sie können die Methode setInitialDelay für PeriodicWorkRequest.Builder verwenden, um eine anfängliche Verzögerung festzulegen. b/111404867

  • Es wurde die Möglichkeit hinzugefügt, mit DelegatingWorkerFactory an einen oder mehrere registrierte WorkerFactorys zu delegieren. b/131435993

  • Die von WorkManager verwendete Executor kann jetzt über Configuration.Builder.setTaskExecutor für die gesamte interne Buchhaltung angepasst werden.

  • Die Dokumentation zu WorkRequest.keepResultsForAtLeast (b/130638001), On-Demand-Initialisierung und PeriodicWorkRequest.Builder (b/131711394) wurde verbessert.

Version 2.1.0-alpha01

24. April 2019

WorkManager 2.1.0-alpha01 wird veröffentlicht. Diese Version enthält mehrere neue APIs. Beachten Sie, dass es ab dieser Version neue Funktionen geben wird, die nicht in das 1.x-Release zurückportiert werden. Wir empfehlen den Wechsel zu 2.x.

API-Änderungen

  • Neue On-Demand-Initialisierung für WorkManager, wodurch WorkManager nur erstellt wird, wenn darauf verwiesen wird. b/127497100 So richten Sie Ihr Projekt für die On-Demand-Initialisierung ein:
    1. Deaktivieren Sie den automatischen Initialisierer.
    2. Implementieren Sie Configuration.Provider für Ihr benutzerdefiniertes Application-Objekt.
    3. Ändern Sie alle Verweise von WorkManager.getInstance() in WorkManager.getInstance(Context). Im Rahmen dieser Änderung wurde WorkManager.getInstance() eingestellt. Es ist immer sicherer, die neue WorkManager.getInstance(Context)-Ersetzung aufzurufen, auch wenn du keine On-Demand-Initialisierung vornimmst.
  • Es wurde die Möglichkeit hinzugefügt, über die Einheiten testbare Worker- und ListenableWorker-Klassen mithilfe von TestWorkerBuilder und TestListenableWorkerBuilder im Artefakt work-testing zu erstellen.
    • Hinweis: Mit work-testing werden Kotlin-Tags jetzt als Abhängigkeit abgerufen, enthält aber standardmäßig auch mehrere Kotlin-Erweiterungen.
  • Anzahl der Ausführungsversuche zu WorkInfo hinzugefügt. b/127290461
  • Data-Typen können jetzt Byte und Bytearrays speichern und abrufen. Die maximale Größe von Data-Objekten wird dadurch NICHT geändert.
  • Eingestellt: CoroutineWorker.coroutineContext. Dieses Feld wurde fälschlicherweise als CoroutineDispatcher eingegeben. Sie sollten es nicht mehr benötigen, da Sie selbst im Text der anhaltenden Funktion den gewünschten coroutineContext aufrufen können.
  • RxWorker.createWork() und RxWorker.getBackgroundScheduler() sind jetzt mit @NonNull-Rückgabetypen annotiert.

Version 2.0.1

Version 2.0.1

9. April 2019

WorkManager 2.0.1 wurde veröffentlicht. Diese Version ist mit 2.0.1-rc01 identisch.

Version 2.0.1-rc01

3. April 2019

WorkManager 2.0.1-rc01 wurde veröffentlicht. Diese Version enthält einige Fehlerkorrekturen. Für Nutzer von Legacy-1.x werden einige dieser Änderungen auch in 1.0.1-rc01 angezeigt.

Fehlerkorrekturen

  • Robolectric-Tests funktionieren jetzt ordnungsgemäß mit WorkManager. b/122553577
  • Ein Grenzfallabsturz wurde behoben, bei dem die Einschränkungsverfolgung in Pre-JobScheduler-APIs nicht bereinigt wurde. b/129226383
  • Ein StackOverflowError mit langen Arbeitsketten wurde behoben. b/129091233
  • Die Dokumentation für PeriodicWorkRequests wurde aktualisiert, um anzugeben, dass die flexible Zeit in API 23 nicht unterstützt wird.
  • Einige fehlerhafte Links in der Kotlin-Dokumentation wurden korrigiert.

Version 2.0.0

Version 2.0.0

20. März 2019

WorkManager 2.0.0 wird veröffentlicht. Diese Version ist identisch mit 2.0.0-rc01 und ist die AndroidX-Version von 1.0.0 (stabile Version) mit AndroidX-Abhängigkeiten. Wir empfehlen, diese Version anstelle der alten 1.x-Versionen zu verwenden. Die gesamte aktive Entwicklung ist auf 2.x ausgerichtet und 1.x erhält nur für begrenzte Zeit kritische Fehlerkorrekturen.

Version 2.0.0-rc01

7. März 2019

WorkManager 2.0.0-rc01 wurde veröffentlicht. Diese Version ist mit der stabilen Version 1.0.0 identisch, weist jedoch Abhängigkeiten von AndroidX auf. Sobald die Version 2.0.0 stabil ist, sollten Sie diese Version verwenden. Die Legacy-Versionen 1.x erhalten nur noch einige wichtige Fehlerkorrekturen. Die gesamte aktive Entwicklung ist auf 2.x ausgerichtet.

Abhängigkeiten vor AndroidX

Informationen zur Verwendung von Kotlin-Erweiterungen finden Sie in der KTX-Dokumentation.
Referenzdokumente: Java

Groovig

dependencies {
    def work_version = "1.0.1"

    // (Java only)
    implementation "android.arch.work:work-runtime:$work_version"

    // Kotlin + coroutines
    implementation "android.arch.work:work-runtime-ktx:$work_version"

    // optional - RxJava2 support
    implementation "android.arch.work:work-rxjava2:$work_version"
    // optional - Test helpers
    androidTestImplementation "android.arch.work:work-testing:$work_version"
}

Kotlin

dependencies {
    val work_version = "1.0.1"

    // (Java only)
    implementation("android.arch.work:work-runtime:$work_version")

    // Kotlin + coroutines
    implementation("android.arch.work:work-runtime-ktx:$work_version")

    // optional - RxJava2 support
    implementation("android.arch.work:work-rxjava2:$work_version")

    // optional - Test helpers
    androidTestImplementation("android.arch.work:work-testing:$work_version")
}

Version 1.0.1

Version 1.0.1

9. April 2019

WorkManager 1.0.1 wurde veröffentlicht. Diese Version ist mit 1.0.1-rc01 identisch.

Wir empfehlen Nutzern dringend, auf WorkManager 2.x zu aktualisieren, da es in Zukunft nur sehr wenige Updates für den 1.x-Zweig geben wird. Es werden auch keine neuen APIs für die 1.x-Bibliothek veröffentlicht.

Version 1.0.1-rc01

2. April 2019

WorkManager 1.0.1-rc01 wurde veröffentlicht. Diese Version enthält einige Fehlerkorrekturen.

Fehlerkorrekturen

  • Robolectric-Tests funktionieren jetzt ordnungsgemäß mit WorkManager. b/122553577
  • Ein Grenzfallabsturz wurde behoben, bei dem die Einschränkungsverfolgung in Pre-JobScheduler-APIs nicht bereinigt wurde. b/129226383
  • Ein StackOverflowError mit langen Arbeitsketten wurde behoben. b/129091233

Version 1.0.0

Version 1.0.0

5. März 2019

Dies ist die stabile Version 1.0.0 von WorkManager. Diese Version von WorkManager entspricht 1.0.0-rc02.

Version 1.0.0-rc02

21. Februar 2019

Dies ist der zweite Release-Kandidaten für die stabile Version 1.0.0 von WorkManager. Diese Version enthält zwei Fehlerbehebungen.

Fehlerkorrekturen

  • Workers werden nach einem Anwendungsabsturz jetzt korrekt geplant. b/124546316

  • Workers, die ein deaktiviertes Exception auslösen, werden jetzt korrekt als FAILED markiert und stürzen den App-Prozess nicht mehr ab.

Version 1.0.0-rc01

14. Februar 2019

Dies ist ein Releasekandidat für die stabile Version 1.0.0 von WorkManager. Diese Version enthält eine Fehlerkorrektur.

Fehlerkorrekturen

  • Die auf AlarmManager basierende Implementierung respektiert jetzt flex-Fenster für PeriodicWorkRequests korrekt. b/124274584

Version 1.0.0-beta05

6. Februar 2019

Diese Version enthält einige Fehlerbehebungen.

Fehlerkorrekturen

  • Ein Fall wurde behoben, bei dem JobScheduler.getPendingJob(...) in API 23 verwendet wurde. b/123893059
  • NullPointerException auf Geräten mit Android 5.1 (API-Level 22) oder niedriger wurde behoben. b/123835104

Version 1.0.0-beta04

4. Februar 2019

Diese Version enthält einige Fehlerbehebungen.

Fehlerkorrekturen

  • Verbesserte Planung von PeriodicWork für die auf AlarmManager basierende Implementierung.
  • Ein Fall wurde behoben, bei dem WorkManager Einschränkungen bei Verwendung der AlarmManager-basierten Implementierung nicht korrekt nachverfolgen konnte. b/123379508
  • Ein Fall wurde behoben, bei dem WorkManager die Arbeit am Prozessende nicht wiederholen konnte, wenn die AlarmManager-basierte Implementierung verwendet wurde. b/123329850
  • Ein Fall wurde behoben, bei dem WorkManager bei Verwendung der AlarmManager-basierten Implementierung Wakelocks verließ.

Version 1.0.0-beta03

25. Januar 2019

Diese Version enthält einige Fehlerbehebungen.

Fehlerkorrekturen

  • Wir haben die Regression 1.0.0-beta02 eingeführt, die dazu führte, dass die Arbeit in einigen Situationen nicht ordnungsgemäß ausgeführt wurde. b/123211993
  • Ein Fall wurde behoben, bei dem die Backoff-Zeit bei der Arbeit nicht richtig berücksichtigt wurde. b/122881597
  • Ein ConcurrentModificationException auf Geräten mit Android 5.1 (API oder niedriger) wurde behoben. Dies ist eine Fortsetzung der Fehlerbehebung in 1.0.0-beta02. b/121345393
  • exported=false wurde für einige Komponenten in unserem Manifest hinzugefügt, bei denen diese Annotation fehlte.
  • In der Dokumentation auf Paketebene wurden Informationen dazu enthalten, wie WorkManager mit dem Betriebssystem interagiert.

Version 1.0.0-beta02

15. Januar 2019

Diese Version enthält einige Fehlerbehebungen.

Fehlerkorrekturen

  • Ein Grenzfall wurde behoben, bei dem regelmäßige Arbeit auf Geräten mit Android 6.0 (API-Ebene 23) mehr als einmal pro Intervall ausgeführt werden konnte. b/121998363
  • ConcurrentModificationException auf Geräten mit Android 5.1 (API-Level 22) oder niedriger wurde behoben. b/121345393
  • Fehler beim Ausführen von Aufgaben behoben, wenn auf Geräten mit Android 5.1 (API-Level 22) oder niedriger keine Einschränkungen erfüllt sind. b/122578012
  • Optimierte Verarbeitung der Aufgaben, um in einigen Grenzfällen schneller zu arbeiten. b/122358129
  • Es wurde eine Änderung hinzugefügt, um potenzielle Race-Bedingungen für mehrere Instanzen von LiveData zu berücksichtigen, die WorkManager verwendet.
  • Verschoben, um die Room-Abhängigkeit 1.1.1 anstelle von 1.1.1-rc01 zu verwenden. Diese Versionen sind identisch. b/122578011

Version 1.0.0-beta01

19. Dezember 2018

Diese Version enthält keine API-Änderungen; in Zukunft wird erwartet, dass WorkManager die API bis zur nächsten Version stabil bleibt, sofern kein kritisches Problem auftritt. Diese Version enthält einige Fehlerbehebungen.

Fehlerkorrekturen

  • Zuvor abgebrochene untergeordnete Aufgaben von erfolgreich abgeschlossenen übergeordneten Aufgaben werden nicht mehr ausgeführt. b/120811767
  • Richtig initialisierte Logging-Klassen (werden hauptsächlich während Tests angezeigt)

Version 1.0.0-alpha13

12. Dezember 2018

Dieser Release enthält eine kleine API-Änderung, die für einige Kotlin-Nutzer hilfreich ist.

API-Änderungen

  • androidx.work.Result wurde in eine innere Klasse von ListenableWorker verschoben. Dadurch werden Refaktorierungskonflikte mit der Result-Klasse der obersten Ebene von Kotlin verhindert. Dies ist eine nicht abwärtskompatible API-Änderung. b/120564418

Wichtige API-Änderungen

  • androidx.work.Result wurde in eine innere Klasse von ListenableWorker verschoben.

Version 1.0.0-alpha12

5. Dezember 2018

Diese Version enthält einige funktionsgefährdende API-Änderungen. Weitere Informationen finden Sie unten im Abschnitt Wichtige API-Änderungen. Diese Version wird wahrscheinlich als erste Betaversion veröffentlicht werden. alpha12 enthält auch umfangreiche Dokumentationsaktualisierungen.

API-Änderungen

  • Mit dem neuen Artefakt work-rxjava2 wird RxWorker eingeführt. Dies ist ein ListenableWorker, der Single<Payload> erwartet.
  • Firebase JobDispatcher wird nicht mehr unterstützt, da die Funktion demnächst eingestellt wird. Das bedeutet, dass das work-firebase-Artefakt im Rahmen der Betaphase nicht mehr aktualisiert wird. Wir arbeiten daran, in Zukunft eine Alternative hinzuzufügen.
  • Payload in Result kombiniert. Result ist jetzt eine „versiegelte Klasse“ mit drei konkreten Implementierungen, die Sie über Result.success() (oder Result.success(Data)), Result.failure() (oder Result.failure(Data)) und Result.retry() erhalten. Ihre ListenableFutures ergeben jetzt Result statt Payload. Workers haben keine Getter- und Setter-Methoden für die Ausgabe Data. Das ist eine funktionsgefährdende Änderung.
  • Constraints.Builder.setTriggerContentMaxDelay(long, TimeUnit) und Constraints.Builder.setTriggerContentUpdateDelay(long, TimeUnit) sowie Varianten wurden hinzugefügt, um langsam auslösende Inhalts-URIs besser zu unterstützen. b/119919774
  • WorkRequest.Builder.setBackoffCriteria(BackoffPolicy, Duration) Variante wurde hinzugefügt. Für diese Methode ist API 26 erforderlich.
  • Die Kotlin-Erweiterungsmethoden Operation.await() und ListenableFuture.await() wurden hinzugefügt.
  • Operation.getException() wurde in Operation.getThrowable() umbenannt. Das ist eine funktionsgefährdende Änderung.
  • Die Klasse ContentUriTriggers und die Methoden, die darauf verweisen, sind nicht mehr öffentlich verfügbar. Das ist eine funktionsgefährdende Änderung.
  • Die restlichen varargs-Methoden aus WorkManager, WorkContinuation und OneTimeWorkRequest wurden entfernt, um die API zu optimieren. Zur Behebung von Build-Problemen können Sie Ihre vorhandenen Varargs mit Arrays.asList(...) umschließen. Wir fügen weiterhin Einzelargumente für jede Methode hinzu. Das ist eine funktionsgefährdende Änderung.
  • WorkContinuation.combine(OneTimeWorkRequest, *) Varianten wurden entfernt. Es hat eine verwirrende API präsentiert. Die vorhandenen combine-Methoden sind verständlicher. Das ist eine funktionsgefährdende Änderung.

Fehlerkorrekturen

  • Pre-Marshmallow-Implementierungen sind jetzt zuverlässiger, wenn es darum geht, den Tod von bereits laufenden Aufgaben zu bewältigen.
  • LiveData, der über observeForever beobachtet wird, wird über WorkManager erfasst. Dies ist ein Backport einer Fehlerbehebung für die Raumbibliothek. B/74477406
  • Data.Builder.build() gibt jetzt eine Ausnahme aus, wenn das serielle Objekt seine maximale Größe überschreitet. Früher geschah dies nur bei einem Hintergrundthread, der nicht richtig verarbeitet werden konnte.
  • Es wird weiter unterschieden, ob angehaltene und abgebrochene Arbeiten gelöscht wurden. getWorkInfoById() gibt während ListenableWorker.onStopped() ein WorkInfo mit dem CANCELLED State zurück.
  • null-Results in ListenableWorker als Fehler behandeln. b/120362353
  • Spekulative Korrektur für Shield Tablets mit API 24, die manchmal ein IllegalArgumentException ausgelöst haben b/119484416

Wichtige API-Änderungen

  • Firebase JobDispatcher wird nicht mehr unterstützt, da die Funktion demnächst eingestellt wird. Das bedeutet, dass das work-firebase-Artefakt im Rahmen der Betaphase nicht mehr aktualisiert wird. Wir arbeiten daran, in Zukunft eine Alternative hinzuzufügen.
  • Payload in Result kombiniert. Result ist jetzt eine „versiegelte Klasse“ mit drei konkreten Implementierungen, die Sie über Result.success() (oder Result.success(Data)), Result.failure() (oder Result.failure(Data)) und Result.retry() erhalten. Ihre ListenableFutures ergeben jetzt Result statt Payload. Workers haben keine Getter- und Setter-Methoden für die Ausgabe Data.
  • Die Kotlin-Erweiterungsmethoden Operation.await() und ListenableFuture.await() wurden hinzugefügt.
  • Operation.getException() wurde in Operation.getThrowable() umbenannt.
  • Die Klasse ContentUriTriggers und die Methoden, die darauf verweisen, sind nicht mehr öffentlich verfügbar.
  • Die restlichen varargs-Methoden aus WorkManager, WorkContinuation und OneTimeWorkRequest wurden entfernt, um die API zu optimieren. Zur Behebung von Build-Problemen können Sie Ihre vorhandenen Varargs mit Arrays.asList(...) umschließen. Wir fügen weiterhin Einzelargumente für jede Methode hinzu.
  • WorkContinuation.combine(OneTimeWorkRequest, *) Varianten wurden entfernt. Es hat eine verwirrende API präsentiert. Die vorhandenen combine-Methoden sind verständlicher.

Version 1.0.0-alpha11

8. November 2018

Diese Version enthält viele Änderungen, die ab beta zur stabilen API werden. In dieser Version gibt es nicht abwärtskompatible API-Änderungen. Weitere Informationen finden Sie unten im Abschnitt Wichtige API-Änderungen.

API-Änderungen

  • Mit work-runtime-ktx wird ein neues CoroutineWorker eingeführt.
  • WorkStatus wurde in WorkInfo umbenannt. Alle entsprechenden Varianten der Methode getStatus wurden in die entsprechenden Varianten getWorkInfo umbenannt. Das ist eine funktionsgefährdende Änderung.
  • ListenableWorker.onStopped() akzeptiert kein boolesches Argument mehr, das angibt, ob WorkRequest abgebrochen wurde. Diese Unterscheidung wird von WorkManager nicht mehr vorgenommen. Das ist eine funktionsgefährdende Änderung.
  • Das Paket „androidx.work.test“ wurde in das Paket „androidx.work.testing“ umbenannt. Das ist eine funktionsgefährdende Änderung.
  • Setter für Constraints sind nicht mehr Teil der öffentlichen API. Das ist eine funktionsgefährdende Änderung.
  • WorkerParameters.getTriggeredContentUris() und WorkerParameters.getTriggeredContentAuthorities() haben zuvor Arrays zurückgegeben. Jetzt geben diese Methoden Collections zurück. Das ist eine funktionsgefährdende Änderung.
  • ListenableWorker.onStartWork() wurde in ListenableWorker.startWork() umbenannt. Das ist eine funktionsgefährdende Änderung.
  • Der Konstruktor für WorkStatus ist nicht mehr Teil der öffentlichen API. Das ist eine funktionsgefährdende Änderung.
  • Configuration.getMaxJobSchedulerID() und Configuration.getMinJobSchedulerID() werden in Configuration.getMinJobSchedulerId() bzw. Configuration.getMaxJobSchedulerId() umbenannt. Das ist eine funktionsgefährdende Änderung.
  • Der öffentlichen API wurden viele @NonNull-Anmerkungen hinzugefügt, um die Ergonomie der API zu verbessern.
  • Fügen Sie die WorkManager.enqueueUniqueWork() API hinzu, um eindeutige OneTimeWorkRequests in die Warteschlange zu stellen, ohne eine WorkContinuation erstellen zu müssen.
  • Alle Varianten der Methoden enqueue und cancel für WorkManager geben jetzt einen neuen Operation-Typ zurück. Das ist eine funktionsgefährdende Änderung.
  • Alle Varianten von enqueue akzeptieren keine Varargs für WorkRequests mehr. Das ist eine funktionsgefährdende Änderung. Verwende stattdessen Sammlungen. Sie können Arrays.asList() verwenden, um vorhandenen Code zu ändern. Wir haben dies getan, um die API-Oberfläche und die Anzahl der Methoden zu reduzieren.
  • Wenn Sie versuchen, WorkManager mehrmals pro Vorgang zu initialize, führt dies nun zu einem IllegalStateException. Das ist eine funktionsgefährdende Änderung.

Fehlerkorrekturen

  • WorkRequest.Builder-Elemente im work-runtime-ktx-Artefakt verwenden jetzt ListenableWorker-Werte. Damit wird b/117666259 behoben.
  • Achten Sie darauf, dass die nächste Ausführungszeit für PeriodicWork in der Zukunft liegt. Damit wird b/118204399 behoben.
  • Entfernen Sie potenzielle Laufwerk-E/A-Vorgänge, wenn Sie WorkManager beim Start der App verwenden. Damit wird b/117796731 behoben.
  • Eine Race-Bedingung in WorkConstraintsTracker wurde behoben. Damit wird android-workmanager/issues/56 behoben.

Wichtige API-Änderungen

  • WorkStatus wurde in WorkInfo umbenannt. Alle entsprechenden Varianten der Methode getStatus wurden in die entsprechenden Varianten getWorkInfo umbenannt.
  • ListenableWorker.onStopped() akzeptiert kein boolesches Argument mehr, das angibt, ob WorkRequest abgebrochen wurde. Diese Unterscheidung wird von WorkManager nicht mehr vorgenommen.
  • Das Paket „androidx.work.test“ wurde in das Paket „androidx.work.testing“ umbenannt.
  • Setter für Constraints sind nicht mehr Teil der öffentlichen API.
  • WorkerParameters.getTriggeredContentUris() und WorkerParameters.getTriggeredContentAuthorities() haben zuvor Arrays zurückgegeben. Jetzt geben diese Methoden Collections zurück.
  • ListenableWorker.onStartWork() wurde in ListenableWorker.startWork() umbenannt.
  • Der Konstruktor für WorkStatus ist nicht mehr Teil der öffentlichen API.
  • Configuration.getMaxJobSchedulerID() und Configuration.getMinJobSchedulerID() werden in Configuration.getMinJobSchedulerId() bzw. Configuration.getMaxJobSchedulerId() umbenannt.
  • Alle Varianten der Methoden enqueue und cancel für WorkManager geben jetzt einen neuen Operation-Typ zurück.
  • Alle Varianten von enqueue akzeptieren keine Varargs für WorkRequests mehr.
  • Wenn Sie versuchen, WorkManager mehrmals pro Vorgang zu initialize, führt dies nun zu einem IllegalStateException.

Version 1.0.0-alpha10

11. Oktober 2018

Diese Version unterstützt vom Entwickler gesteuerte asynchrone Arbeit. In dieser Version gibt es nicht abwärtskompatible API-Änderungen. Weitere Informationen finden Sie unten im Abschnitt Wichtige API-Änderungen.

Wir gehen davon aus, dass WorkManager die letzten Phasen der Alpha-Phase erreicht. Wir gehen davon aus, dass die Betaversion der APIs stabil sein wird. Bitte nehmen Sie sich daher etwas Zeit, um uns über unseren Issue Tracker Feedback zu geben.

API-Änderungen

  • Alle zuvor deprecated-Methoden und -Klassen wurden entfernt, insbesondere der Worker-Standardkonstruktor. Dies ist eine funktionsgefährdende API-Änderung.
  • NonBlockingWorker wurde in ListenableWorker umbenannt, der jetzt ein eingeblendeter öffentlicher Kurs ist und verwendet werden kann.
    • ListenableWorker bietet Zugriff auf die abstrakte Methode ListenableFuture<Payload> onStartWork(), die im Hauptthread aufgerufen wird. Es liegt an Ihnen, die Arbeit asynchron zu starten und zu verarbeiten. Wenn Sie fertig sind, sollten Sie die ListenableFuture entsprechend aktualisieren. Referenzimplementierungen von ListenableFutures werden im Futures-Paket in alpha02 bereitgestellt (siehe unten im Abschnitt WorkManager).
    • Worker erweitert ListenableWorker und funktioniert weiterhin wie zuvor mit der abstrakten Result doWork()-Methode.
    • Einige Methoden und Mitglieder wurden von Worker in ListenableWorker zufällig angeordnet.
    • Wir werden bald Referenzimplementierungen für ListenableWorkers bereitstellen, die Kotlin-Koroutinen (nach Veröffentlichung der stabilen Versionen) und RxJava2 verwenden.
  • Die Schnittstelle WorkerFactory und die konkrete Implementierung DefaultWorkerFactory wurden zu einer abstrakten Klasse namens WorkerFactory zusammengeführt. Die Implementierung sorgt dafür, dass das reflexionsbasierte Standardverhalten als letzte Maßnahme für alle von Nutzern erstellten WorkerFactory-Instanzen aufgerufen wird. Das ist eine funktionsgefährdende Änderung.
  • WorkManager.synchronous() und WorkContinuation.synchronous() sowie alle zugehörigen Methoden wurden entfernt. ListenableFuture<Void> wurde in der API als Rückgabetyp vieler Methoden hinzugefügt. Dies ist eine funktionsgefährdende API-Änderung.
    • Sie können jetzt mithilfe von ListenableFutures synchron abrufen und beobachten. Beispielsweise wird mit WorkManager.enqueue() früher void zurückgegeben; jetzt wird ein ListenableFuture<Void> zurückgegeben. Sie können ListenableFuture.addListener(Runnable, Executor) oder ListenableFuture.get() aufrufen, um Code auszuführen, sobald der Vorgang abgeschlossen ist.
    • Beachten Sie, dass diese ListenableFuture-Werte nicht Aufschluss darüber geben, ob der Vorgang erfolgreich war oder fehlgeschlagen ist, sondern nur, dass sie abgeschlossen wurden. Sie müssen weiterhin WorkManager-Methoden verketten, um diese Informationen zu erhalten.
    • cancel()-Aufrufe für diese Objekte werden ignoriert, da sie verwirrend und schwer nachvollziehbar sind. Möchten Sie den Vorgang oder die daraus resultierende Arbeit abbrechen? Dies ist Bestandteil des Vertrags von Future.
    • Um die Gleichheit mit den synchronen getStatus*-Methoden zu wahren, haben wir ListenableFuture Varianten bereitgestellt und die vorhandenen Varianten, die LiveData zurückgegeben haben, so umbenannt, dass sie explizit „LiveData“ als Teil des Namens enthalten (z. B. getStatusesByIdLiveData(UUID)). Diese Änderung der API wird nicht unterstützt.

Fehlerkorrekturen

  • Das bekannte Problem aus alpha09 mit doppelten androidx-annotations.pro-Dateien wurde behoben. Sie können die Problemumgehung aus den vorherigen Versionshinweisen entfernen, indem Sie exclude 'META-INF/proguard/androidx-annotations.pro' aus Ihrer Gradle-Datei löschen.
  • Proguard-Konfigurationen hinzugefügt, um den neuen Worker-Konstruktor beizubehalten. b/116296569
  • Potenzielle NullPointerException in einer Race-Bedingung korrigieren, in der die Arbeit REPLACEd war. b/116253486 und b/116677275
  • WorkContinuation.combine() akzeptiert jetzt eine oder mehrere WorkContinuations statt zwei oder mehr. b/117266752

Wichtige API-Änderungen

  • Alle zuvor deprecated-Methoden und -Klassen wurden entfernt, insbesondere der Worker-Standardkonstruktor.
  • Die Schnittstelle WorkerFactory und die konkrete Implementierung DefaultWorkerFactory wurden zu einer abstrakten Klasse namens WorkerFactory zusammengeführt.
  • WorkManager.synchronous() und WorkContinuation.synchronous() wurden entfernt.
  • WorkManager.getStatus*()-Methoden geben jetzt ListenableFutures zurück. WorkManager.getStatus*LiveData() geben LiveDatas zurück.

Version 1.0.0-alpha09

19. September 2018

Bekanntes Problem

Wenn das folgende Problem auftritt: „Mehr als eine Datei mit dem Betriebssystemunabhängigen Pfad ‚META-INF/proguard/androidx-annotations.pro‘ wurde gefunden“, füge deiner Gradle-Datei Folgendes als vorübergehende Problemumgehung hinzu, während wir das Problem in alpha10 beheben:

Groovig

android {
    packagingOptions {
        exclude 'META-INF/proguard/androidx-annotations.pro'
    }
}

Kotlin

android {
    packagingOptions {
        exclude("META-INF/proguard/androidx-annotations.pro")
    }
}

Fehlerkorrekturen

  • Eine weitere Korrektur, die für den Fehler „100 Jobs“ erforderlich war, wurde hinzugefügt. b/115560696
  • Einige Fehlerkorrekturen für Fremdschlüsseleinschränkungsfehler aufgrund von Race-Bedingungen. b/114705286
  • ConstraintTrackingWorker.onStopped(boolean)-Aufrufe an die zugrunde liegende Worker delegieren. b/114125093
  • Korrekte minimale Backoff-Verzögerung für Firebase JobDispatcher erzwingen. b/113304626
  • Verbesserte Threading-Garantien sind bibliotheksintern.
  • Potenzielles Problem mit der internen Deduplizierung von LiveData beheben.

API-Änderungen

  • Sie können jetzt Ihre eigenen Worker-Instanzen zur Laufzeit erstellen. Geben Sie dazu einen WorkerFactory als Teil von WorkManager.Configuration an. Die Fallback-Factory ist DefaultWorkerFactory, was dem Verhalten vorheriger Versionen von WorkManager entspricht.
    • Die Standardkonstruktoren für Worker und NonBlockingWorker sind jetzt als verworfen markiert. Verwenden Sie den neuen Konstruktor (Worker(Context, WorkerParameters)) und rufen Sie super(Context, WorkerParameters) auf. In zukünftigen Versionen von WorkManager wird der Standardkonstruktor entfernt.
  • Wir haben damit begonnen, das neue ListenableFuture-Artefakt intern zu verwenden (keine Guava-Abhängigkeiten). In zukünftigen Releases werden wir die API „ListenableFutures“ vorstellen. Durch diese Änderung kann NonBlockingWorker auch wieder eingeblendet werden.
  • Möglichkeit zum Auslösen von geplanten Aufgaben in TestDriver über TestDriver.setInitialDelayMet(UUID) und TestDriver.setPeriodDelayMet(UUID) hinzugefügt. b/113360060

Wichtige Änderungen

  • Die Standardkonstruktoren Worker und NonBlockingWorker wurden eingestellt. Migrieren Sie so bald wie möglich zum neuen Konstruktor. In zukünftigen Versionen wird der Standardkonstruktor entfernt.

Version 1.0.0-alpha08

27. August 2018

Fehlerkorrekturen

  • WorkManager-Komponenten wurden ausdrücklich als nicht erkannt für direkten Start gekennzeichnet, damit sie während des direkten Starts nicht gestartet werden. Zukünftig wird es eine Version von WorkManager geben, die direkt auf den Bootmodus zugreift. b/112665532
  • Ein Problem wurde behoben, bei dem wiederholte Arbeitsschritte nicht ausgeführt wurden. b/112604021
  • Regelmäßige Arbeit wurde behoben, die nicht wiederholt ausgeführt wurde (aufgrund des oben genannten Problems). b/112859683
  • Backoff-Richtlinien werden berücksichtigt, wenn der Anwendungsprozess bereits läuft.
  • Ausnahmemeldungen in Data wurden korrigiert, um anzugeben, dass das Limit bei 10 KB liegt.
  • Der Höchstwert von Configuration.setMaxSchedulerLimit(int) wurde auf 50 gesenkt, um eine gewisse Latenz beim Abschluss der Verarbeitung in JobScheduler zu berücksichtigen. b/112817355

Version 1.0.0-alpha07

16. August 2018

Fehlerkorrekturen

  • Eine potenzielle SQL-Abfrage mit negativen Grenzen, die eine unbegrenzte Anzahl von Ergebnissen zurückgeben konnte, wurde behoben.
  • Bei abgeschlossenen Arbeiten werden jetzt alle ausstehenden Kopien dieser Arbeit in anderen Planern wie vorgesehen abgebrochen. Dies hat zur Überschreitung des Limits von JobScheduler Jobs geführt. b/111569265
  • Problem mit ConcurrentModificationException in ConstraintTracker behoben. b/112272753
  • Die Rückgabetyp-Annotationen von Data.getBooleanArray(String) und Data.getIntArray(String) wurden in @Nullable anstelle von @NonNull geändert. b/112275229

API-Änderungen

  • Worker erweitert jetzt den neuen Kurs NonBlockingWorker. Dies hat keine Auswirkungen auf die aktuelle Nutzung. In Zukunft wird NonBlockingWorker zu einer vollständig unterstützten Entität für benutzerdefinierte Threading-Lösungen.
  • Die Rückgabetyp-Annotationen von Data.getBooleanArray(String) und Data.getIntArray(String) wurden in @Nullable anstelle von @NonNull geändert. b/112275229
  • Kotlin-Erweiterungen: Map.toWorkData() wurde eingestellt und workDataOf(vararg Pair<String, Any?>) auf oberster Ebene hinzugefügt, um die Konsistenz mit vorhandenen APIs zu verbessern.

Version 1.0.0-alpha06

1. August 2018

Fehlerkorrekturen

  • Datenbanksperrung beim Planen von Aufgaben verhindern. b/111801342
  • Ein Fehler wurde behoben, der dazu geführt hat, dass PeriodicWork im Stromsparmodus nicht wie geplant ausgeführt wurde. b/111469837
  • Eine Race-Bedingung beim Verfolgen von Einschränkungen, die zum Absturz von WorkManager führt, wurde behoben. googlecodelabs/android-workmanager/issues/56
  • Erstellen Sie eindeutige WorkRequests, wenn Sie WorkRequest.Builder#build() verwenden. b/111408337
  • Aktiviert die Verwendung von RescheduleReceiver nur dann, wenn es WorkRequests gibt, die sie benötigen. b/111765853

Version 1.0.0-alpha05

24. Juli 2018

API-Änderungen

  • WorkManager.getInstance() ist jetzt mit @NonNull anstelle von @Nullable annotiert. Wenn das Singleton-Objekt bei manueller Initialisierung nicht ordnungsgemäß initialisiert wird, gibt die Methode stattdessen ein IllegalStateException aus. Dies ist eine funktionsgefährdende API-Änderung.
  • Es wurde eine neue API (Configuration.Builder.setMinimumLoggingLevel(int)) hinzugefügt, mit der die Ausführlichkeit von WorkManager gesteuert werden kann. Standardmäßig protokolliert WorkManager Log.INFO und höher.
  • Die Signatur von Data.getString() wurde geändert, sodass kein Standardwert mehr verwendet wird (entspricht implizit null). Diese Änderung der API würde nicht funktionieren.
  • Einige Methoden, die nur für die interne Verwendung benötigt werden, wurden als @hide gekennzeichnet. Dazu gehören der Constraints-Konstruktor, Data.toByteArray() und Data.fromByteArray(byte[]). Dies ist eine funktionsgefährdende API-Änderung.

Fehlerkorrekturen

  • WorkManager führt in bekannten Fällen einer automatischen Sicherung keine Aufgaben mehr aus. Dies könnte zu einem Absturz geführt haben. b/110564377
  • Die doppelte Planung von PeriodicWorkRequests bei Verwendung von JobScheduler wurde korrigiert. b/110798652
  • Es wurde ein Problem behoben, bei dem PeriodicWorkRequests nach dem Stromsparmodus des Geräts nicht korrekt ausgeführt wurden. b/111469837
  • Ein Problem mit anfänglichen Verzögerungen bei der Verwendung von Firebase JobDispatcher wurde behoben. b/111141023
  • Einige potenzielle Race-Bedingungen und Zeitprobleme wurden behoben.
  • BroadcastReceiver nicht mehr benötigte Dateien wurden korrekt freigegeben.
  • Optimierte Leistung beim Verschieben von Apps, wenn Apps nach einem erzwungenen Schließen neu gestartet werden.
  • TestScheduler.setAllConstraintsMet(UUID) darf vor oder nach Einreihen der angegebenen WorkRequest in die Warteschlange aufgerufen werden. b/111238024

Wichtige Änderungen

  • WorkManager.getInstance() ist jetzt mit @NonNull anstelle von @Nullable annotiert.
  • Die Signatur von Data.getString() wurde geändert, sodass kein Standardwert mehr verwendet wird (implizit null).
  • Einige Methoden, die nur für die interne Verwendung benötigt werden, wurden als @hide gekennzeichnet. Dazu gehören der Constraints-Konstruktor, Data.toByteArray() und Data.fromByteArray(byte[]).

Version 1.0.0-alpha04

26. Juni 2018

Fehlerkorrekturen

  • PeriodicWorkRequests werden jetzt korrekt neu geplant, wenn die AlarmManager-basierte Implementierung verwendet wird.
  • Ein potenzieller ANR-Fehler wurde behoben, wenn alle Worker nach einem erzwungenen Stopp oder einem Neustart neu geplant wurden. b/110507716
  • Annotationen zur Null-Zulässigkeit wurden verschiedenen WorkManager APIs hinzugefügt. b/110344065
  • Nicht erfasste Ausnahmen protokollieren, die während der Worker-Ausführung auftreten. b/109900862
  • destruktive Datenbankmigrationen sind zulässig, falls Sie ein Rollback auf eine ältere Version von WorkManager ausführen möchten. b/74633270
  • Ein Migrationsabsturz bei der Erstellung doppelter impliziter Tags wurde behoben. Dieses sehr seltene Problem trat nur auf, wenn Sie dasselbe implizite Tag-Format selbst verwendet haben.

Version 1.0.0-alpha03

19. Juni 2018

Fehlerkorrekturen

  • Eine Race-Bedingung in der AlarmManager-basierten Implementierung wurde behoben. b/80346526.

  • Doppelte Jobs bei der Verwendung von JobScheduler nach einem Geräteneustart wurden behoben.

  • Jobs mit Inhalts-URI-Triggern bleiben jetzt auch nach Neustarts bestehen. b/80234744

  • Updates der Dokumentation. b/109827628, b/109758949, b/80230748

  • Ein Absturz beim erneuten Einreihen von WorkRequest in die Warteschlange wurde behoben. b/109572353.

  • Die Kotlin-Compiler-Warnungen bei Verwendung der work-runtime-ktx-Abhängigkeit wurden behoben.

  • WorkManager verwendet jetzt Version 1.1.1-rc1 von Room.

API-Änderungen

  • getStatusesSync() wurde hinzugefügt, die synchrone Version von WorkContinuation.getStatuses().
  • Worker kann zwischen einem vom Nutzer initiierten Abbruch und einem temporären vom Betriebssystem angeforderten Beenden unterscheiden. Worker.isStopped() gibt true zurück, wenn eine Haltestelle angefordert wurde. Worker.isCancelled() gibt true zurück, wenn die Arbeit explizit abgebrochen wurde. b/79632247
  • Unterstützung für JobParameters#getNetwork() in API 28 hinzugefügt. Dies wird über Worker.getNetwork() angezeigt.
  • Configuration.Builder.setMaxSchedulerLimit(int maxSchedulerLimit) wurde hinzugefügt, damit Sie erzwingen können, wie viele Jobs an JobScheduler oder AlarmManager gesendet werden können. So wird verhindert, dass WorkManager alle verfügbaren JobScheduler-Slots belegt.
  • Configuration.setJobSchedulerJobIdRange(int minJobSchedulerId, int maxJobSchedulerId) wurde hinzugefügt, um einen Bereich von JobScheduler-Job-IDs zu definieren, die von WorkManager sicher verwendet werden können. b/79996760
  • Worker.getRunAttemptCount() gibt die aktuelle Anzahl der Ausführungen für eine bestimmte Worker zurück. b/79716516
  • Mit WorkManager.enqueueUniquePeriodicWork(String uniqueWorkName, ExistingPeriodicWorkPolicy existingPeriodicWorkPolicy, PeriodicWorkRequest periodicWork) können Sie eindeutige PeriodicWorkRequests in die Warteschlange stellen. b/79600647
  • WorkManager.cancelAllWork() bricht alle Worker-Vorgänge ab. Bibliotheken, die von WorkManager abhängig sind, können mithilfe von WorkManager.getLastCancelAllTimeMillis() abfragen, wann diese Methode zuletzt aufgerufen wurde, um den internen Status zusätzlich zu bereinigen.
  • WorkManager.pruneWork() wurde hinzugefügt, um abgeschlossene Jobs aus der internen Datenbank zu entfernen. b/79950952, b/109710758

Änderungen des Verhaltens

  • Es wurde ein implizites Tag für alle WorkRequest-Elemente hinzugefügt. Das ist der voll qualifizierte Klassenname für Worker. Dadurch können Sie WorkRequest-Werte ohne tag-Werte entfernen oder wenn id nicht verfügbar ist. b/109572351

Wichtige Änderungen

  • Worker.WorkerResult wurde in Worker.Result umbenannt.
  • Worker.onStopped verfügt jetzt über einen zusätzlichen isCancelled-Parameter, der auf true gesetzt wird, wenn Worker explizit abgebrochen wurde.

Version 1.0.0-alpha02

24. Mai 2018

Fehlerkorrekturen

  • Problem mit NullPointerException für State.isFinished() behoben. b/79550068
  • Ein Problem wurde behoben, durch das Workers am Application.onCreate() verschoben wurden. B/79660657
  • Es wurde ein Problem behoben, bei dem Sie mehr Arbeit planen konnten, als vom Betriebssystem zulässig ist. b/79497378
  • Bereinigung von Wakelocks, die mit Workers verknüpft sind, wurde in den Hintergrundthread verschoben.
  • Die AlarmManager-Implementierung bereinigt jetzt korrekt, wenn alle ausstehenden Arbeiten abgeschlossen sind.
  • Das Problem mit Cleanup-SQL-Abfragen, die sich auf nicht englischsprachige Sprachen ausgewirkt haben, wurde behoben. b/80065360
  • Unterstützung für floats in Data hinzugefügt. b/79443878
  • Data.Builder.putAll() gibt jetzt eine Instanz von Builder zurück. b/79699162
  • Weitere Javadoc und Fehlerbehebungen in der Dokumentation. b/79691663

API-Änderungen

  • Worker können reagieren, wenn sie angehalten werden. Mit Worker.isStopped() kann geprüft werden, ob eine Worker beendet wurde. Worker.onStopped() kann für einfache Bereinigungsvorgänge verwendet werden.
  • Die Worker.getTags() API gibt ein Set mit Tags zurück, die mit Worker verknüpft sind.
  • javax.time.Duration-Überlastungen für APIs hinzugefügt, die eine Kombination aus Dauer und TimeUnits erfordern. Dieser Vorgang wird von @RequiresApi(26) geschützt.
  • WorkManager Erweiterungen wurden aus dem androidx.work.ktx-Paket in das androidx.work-Paket verschoben. Die alten Erweiterungen wurden eingestellt und werden in einer zukünftigen Version entfernt.
  • Configuration.withExecutor() wurde verworfen. Verwende stattdessen Configuration.setExecutor().

Version 1.0.0-alpha01

8. Mai 2018

WorkManager vereinfacht die Planung und Ausführung garantierter, beschränkungsbasierter Hintergrundarbeiten. Dieser erste Release ist 1.0.0-alpha01.