WorkManager

Mit der WorkManager API können Sie verzögerbare, asynchrone Aufgaben ganz einfach 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 Arbeitseinschränkungen erfüllt sind.
Letzte Aktualisierung Stabile Version Releasekandidat Beta-Ausgabe Alphaversion
23. April 2025 2.10.1 - -

Abhängigkeiten deklarieren

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

Fügen Sie der Datei build.gradle für Ihre App oder Ihr Modul die Abhängigkeiten für die erforderlichen Artefakte hinzu:

dependencies {
    def work_version = "2.10.1"

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

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

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

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

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

    // optional - Multiprocess support
    implementation "androidx.work:work-multiprocess:$work_version"
}
dependencies {
    val work_version = "2.10.1"

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

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

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

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

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

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

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

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

Feedback

Ihr Feedback hilft uns, Jetpack zu verbessern. Bitte teilen Sie uns mit, wenn Sie neue Probleme entdecken oder Ideen zur Verbesserung dieser Bibliothek haben. Sehen Sie sich die vorhandenen Probleme in dieser Bibliothek an, bevor Sie ein neues erstellen. Sie können einer vorhandenen Anfrage Ihre Stimme geben, indem Sie auf die Schaltfläche mit dem Stern klicken.

Neues Problem erstellen

Weitere Informationen finden Sie in der Dokumentation zum Issue Tracker.

Version 2.10

Version 2.10.1

23. April 2025

androidx.work:work-*:2.10.1 wird veröffentlicht. Version 2.10.1 enthält diese Commits.

Fehlerkorrekturen

  • Verringern Sie die Wahrscheinlichkeit, dass TooManyRequestsException durch die Registrierung einer WorkManager durch WorkManager geworfen wird, die für das Tracking von Einschränkungen verwendet wird.NetworkCallback ((b/231499040)[https://issuetracker.google.com/231499040], b309d5).

Version 2.10.0

30. Oktober 2024

androidx.work:work-*:2.10.0 wird veröffentlicht. Version 2.10.0 enthält diese Commits.

Wichtige Änderungen seit Version 2.9.1

  • Jobs aus WorkManager wurden jetzt mit Trace-Tags versehen. Dadurch ist „adb shell dumpsys jobscheduler“ viel verständlicher, da der Name des ausgeführten Workers enthalten ist. Außerdem werden Trace-Abschnitte um wichtige Bereiche von WorkManager herum hinzugefügt.
  • Configuration.workerCoroutineContext wurde zur Steuerung des Dispatchers hinzugefügt, in dem CoroutineWorker ausgeführt wird.
  • Entwickler können NetworkRequest über die Methode Constraints.setRequiredNetworkRequest als Einschränkung für einen Worker angeben. So können Sie genauer festlegen, in welchem Netzwerk dieser Worker ausgeführt werden soll.
  • WorkManager 2.10.0 wird jetzt mit SDK 35 kompiliert und enthält verschiedene Änderungen für die Kompatibilität mit SDK 35.

Version 2.10.0-rc01

24. Oktober 2024

androidx.work:work-*:2.10.0-rc01 wird veröffentlicht. Version 2.10.0-rc01 enthält diese Commits.

Version 2.10.0-beta01

2. Oktober 2024

androidx.work:work-*:2.10.0-beta01 wird veröffentlicht. Version 2.10.0-beta01 enthält diese Commits.

Version 2.10.0-alpha04

18. September 2024

androidx.work:work-*:2.10.0-alpha04 wird veröffentlicht. Version 2.10.0-alpha04 enthält diese Commits.

API-Änderungen

  • Fügen Sie den Grund für das Beenden STOP_REASON_FOREGROUND_SERVICE_TIMEOUT hinzu, wenn ein Worker im Vordergrund aufgrund eines Zeitlimits für die Ausführung beendet wird. Hierbei müssen Sie den Typ des Dienstes im Vordergrund angeben. (Ibd0af)

Version 2.10.0-alpha03

4. September 2024

androidx.work:work-*:2.10.0-alpha03 wird veröffentlicht. Version 2.10.0-alpha03 enthält diese Commits.

Neue Funktionen

  • Jobs aus WorkManager wurden jetzt mit Trace-Tags versehen. Dadurch ist „adb shell dumpsys jobscheduler“ viel verständlicher, da der Name des ausgeführten Workers enthalten ist. Außerdem werden Trace-Abschnitte um wichtige Bereiche von WorkManager herum hinzugefügt.

API-Änderungen

  • WorkManager 2.10.0 wird jetzt mit SDK 35 kompiliert.
  • Behebung des Zeitüberschreitungsproblems bei Vordergrund-Workern vom Typ „kurzer Dienst“ und „Datensynchronisierung“, das zu einer ANR führte, wenn WorkManager stopSelf() nicht aufgerufen hat. Diese Korrektur gilt nur für Geräte mit API 34 und 35, auf denen Arten von Diensten im Vordergrund eingeführt wurden. (ca06b2, b/364508145)
  • Neue WorkerParameters APIs, mit denen der Remoteprozess, an den die Worker bei Verwendung einer WorkerFactory gebunden ist, umgeschaltet werden kann. (Ibdc8a, Ie8a90, I7373f)

Fehlerkorrekturen

  • Behebung eines Absturzes, der durch den Versuch von WorkManager verursacht wurde, einen lang laufenden Worker (d.h. einen Worker im Vordergrund) neu zu starten, wenn der Typ der Arbeit im Vordergrund Android 14-Voraussetzungsberechtigungen hatte, die widerrufen wurden. (b/333957914)
  • Die manuelle Kennzeichnung des Zugriffs auf neue Plattform-APIs wurde entfernt, da dies bei Verwendung von R8 mit AGP 7.3 oder höher (z.B. R8 Version 3.3) und für alle Builds bei Verwendung von AGP 8.1 oder höher (z.B. D8 Version 8.1) automatisch über die API-Modellierung erfolgt. Kunden, die AGP nicht verwenden, wird empfohlen, auf D8 Version 8.1 oder höher zu aktualisieren. Weitere Details findest du in diesem Artikel. (Ia60e0, b/345472586)

Version 2.10.0-alpha02

17. April 2024

androidx.work:work-*:2.10.0-alpha02 wird veröffentlicht. Version 2.10.0-alpha02 enthält diese Commits.

API-Änderungen

  • Es ist jetzt möglich, Trace-Bereiche über eine konfigurierbare @RestrictTo Tracer in WorkManager auszugeben. (I17d7f, b/260214125)
  • Configuration.workerCoroutineContext wurde zur Steuerung des Dispatchers hinzugefügt, in dem CoroutineWorker ausgeführt wird. Es ist hilfreich, die Verwendung von Dispatchers.Default in WorkManager vollständig zu vermeiden. (Icd1b7)
  • Benutzerdefinierte Ausnahmebehandlungen für Workers hinzufügen (Ib1b74, b/261190695)
  • OneTimeWorkRequest.Builder und PeriodicWorkRequest.Builder können jetzt mit KClass anstelle von 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 Nullbarkeit. Möglicherweise sind Änderungen am Quellcode der Kunden erforderlich, wenn die Annahmen zur Nullbarkeit in diesem Code falsch waren. (If6757)

Version 2.10.0-alpha01

24. Januar 2024

androidx.work:work-*:2.10.0-alpha01 wird veröffentlicht. Version 2.10.0-alpha01 enthält diese Commits.

Neue Funktionen

  • Entwickler können NetworkRequest über die Methode Constraints.setRequiredNetworkRequest als Einschränkung für einen Worker angeben. So können Sie genauer festlegen, in welchem Netzwerk dieser Worker ausgeführt werden soll.

API-Änderungen

  • Es ist jetzt möglich, NetworkRequest als Einschränkung anzugeben. (Id98a1, b/280634452)

Version 2.9

Version 2.9.1

7. August 2024

androidx.work:work-*:2.9.1 wird veröffentlicht. Version 2.9.1 enthält diese Commits.

Fehlerkorrekturen

  • Behebung eines Absturzes, der durch den Versuch von WorkManager verursacht wurde, einen lang laufenden Worker (d.h. einen Worker im Vordergrund) neu zu starten, wenn der Typ der Arbeit im Vordergrund Voraussetzungsberechtigungen für Android 14 hatte, die widerrufen wurden. (b/333957914)

Version 2.9.0

29. November 2023

androidx.work:work-*:2.9.0 wird veröffentlicht. Version 2.9.0 enthält diese Commits.

Wichtige Änderungen seit Version 2.8.0

  • Beobachtbarkeit über Flow Anstelle von LiveData kann der Fortschritt der Mitarbeiter jetzt über WorkManager.getWorkInfosFlow und ähnliche Methoden in Flows beobachtet werden.
  • Jetzt gibt WorkManager einen Hinweis darauf, warum ein Worker zuvor angehalten wurde. Sie kann über die Methode getStopReason() von einem Worker selbst oder über WorkInfo über getStopReason() abgefragt werden.
  • Präzise Planung von periodischen Workern über setNextScheduleTimeOverride So kann der nächste Zeitplan für den regelmäßigen Ablauf dynamisch berechnet werden. Dies ermöglicht die Implementierung erweiterter Funktionen wie adaptiver Aktualisierungszeiten, benutzerdefinierter Wiederholungsmechanismen oder die Ausführung eines Newsfeed-Workers, bevor der Nutzer jeden Morgen aufwacht, ohne dass es zu Abweichungen kommt. ExistingPeriodicWorkPolicy.UPDATE sollte mit diesen Techniken verwendet werden, um zu vermeiden, dass ein derzeit ausgeführter Worker abgebrochen wird, während der nächste geplant wird.
  • Tests von WorkManager mit Thread-Matching in der Produktion ExecutorsMode.PRESERVE_EXECUTORS kann in initializeTestWorkManager verwendet werden, um in Configuration festgelegte Executors beizubehalten und den echten Hauptthread zu verwenden.
  • Coroutines APIs wie CoroutineWorker wurden aus dem zusätzlichen Artefakt „work-runtime-ktx“ in das Hauptartefakt „work-runtime“ verschoben. „work-runtime-ktx“ ist jetzt leer.

API-Änderungen

  • stopReason wurde WorkInfo hinzugefügt. Dadurch wird stopReason nach der Ausführung des Workers verfügbar gemacht. Dies kann bei der Berichterstellung hilfreich sein, da eine App nach dem Beenden eines Workers sehr schnell beendet werden kann.stopReason (I21386)
  • Clock kann über die Konfiguration festgelegt und zur Steuerung der Ausführungsabfolge von Worker-Tests verwendet werden. (Ic586e)
  • Der Methode ListenableWorker wurde die 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 zu geleakten Ressourcen zu vermeiden. (Ia8d49)
  • Der Konstruktor von WorkInfo ist jetzt öffentlich, was bei Tests nützlich sein kann. (Ia00b6, b/209145335)
  • work-runtime-ktx ist jetzt leer. CoroutineWorker und andere Kotlin-spezifische Dienstprogramme sind jetzt im Haupt-Arbeitslaufzeit-Artefakt verfügbar. (I71a9a)
  • Die Methode setNextScheduleTimeOverride wurde hinzugefügt, mit der sich regelmäßige Arbeitszeiten genau festlegen lassen (I3b4da)
  • getNextScheduleTimeMillis wurde hinzugefügt, um Informationen zur geplanten Ausführungszeit in WorkInfo zu erhalten. (I797e4)
  • WorkInfo werden Informationen zur anfänglichen Verzögerung und zur Periodizität hinzugefügt. (I52f2f)
  • Methode zum Beobachten von Mitarbeitern über Workflows über die Methoden getWorkInfosByTagFlow, getWorkInfoByIdFlow, getWorkInfosForUniqueWorkFlow und getWorkInfosFlow hinzugefügt (If122a)
  • Den Konstruktoren und Properties von Constraints wurden fehlende @RequiresApi(...)-Anmerkungen hinzugefügt. Sie sind jetzt mit entsprechenden Anmerkungen zu Settern in Constraints.Builder abgeglichen, die aus frühen Versionen von WorkManager stammen. (I6d7d2)
  • WorkManager hat jetzt ein separates Limit für Content-URI-Worker, um ihnen garantierte Slots in JobScheduler zuzuweisen und so zu verhindern, dass bei hoher Auslastung Inhalte nicht aktualisiert werden. Das Limit kann über Configuration.Builder.setContentUriTriggerWorkersLimit konfiguriert werden. (Ic128f)
  • WorkInfo werden Einschränkungen hinzugefügt. (I162c0)

Version 2.9.0-rc01

18. Oktober 2023

androidx.work:work-*:2.9.0-rc01 wird veröffentlicht. Version 2.9.0-rc01 enthält diese Commits.

  • Keine Änderungen seit der letzten Betaversion

Version 2.9.0-beta01

6. September 2023

androidx.work:work-*:2.9.0-beta01 wird veröffentlicht. Version 2.9.0-beta01 enthält diese Commits.

API-Änderungen

Version 2.9.0-alpha02

26. Juli 2023

androidx.work:work-*:2.9.0-alpha02 wird veröffentlicht. Version 2.9.0-alpha02 enthält diese Commits.

Neue Funktionen

  • Jetzt gibt WorkManager einen Hinweis darauf, warum ein Worker zuvor angehalten wurde. Sie kann über die Methode getStopReason() von einem Worker selbst oder über WorkInfo über getStopReason() abgefragt werden.

API-Änderungen

  • stopReason wurde WorkInfo hinzugefügt. Sie stellt stopReason nach dem Ausführen des Workers zur Verfügung. Dies kann bei der Berichterstellung hilfreich sein, da eine App nach dem Beenden eines Workers sehr schnell beendet werden kann.stopReason (I21386)
  • Clock kann über die Konfiguration festgelegt und zur Steuerung der Ausführungsabfolge von Worker-Tests verwendet werden. (Ic586e)
  • Der Methode ListenableWorker wurde die Methode getStopReason() hinzugefügt, die einen Hinweis darauf gibt, warum der Worker angehalten wurde. (I07060)
  • WorkManagerTestInitHelper#closeWorkDatabase() hinzugefügt, um die Warnung von Closeguard zu geleakten Ressourcen zu vermeiden. (Ia8d49)

Fehlerkorrekturen

  • Es ist jetzt möglich, overrideNextScheduleTime mit TestDriver zu umgehen. Außerdem wurden Probleme mit der Testbarkeit behoben. (Ic2905)

Version 2.9.0-alpha01

7. Juni 2023

androidx.work:work-*:2.9.0-alpha01 wird veröffentlicht. Version 2.9.0-alpha01 enthält diese Commits.

Neue Funktionen

  • Beobachtbarkeit über Flow Anstelle von LiveData kann der Fortschritt der Mitarbeiter jetzt über WorkManager.getWorkInfosFlow und ähnliche Methoden in Flows beobachtet werden.
  • Präzise Planung von periodischen Workern über setNextScheduleTimeOverride So kann der nächste Zeitplan für den regelmäßigen Ablauf dynamisch berechnet werden. Dies ermöglicht die Implementierung erweiterter Funktionen wie adaptiver Aktualisierungszeiten, benutzerdefinierter Wiederholungsmechanismen oder die Ausführung eines Newsfeed-Workers, bevor der Nutzer jeden Morgen aufwacht, ohne dass es zu Abweichungen kommt. ExistingPeriodicWorkPolicy.UPDATE sollte mit diesen Techniken verwendet werden, um zu vermeiden, dass ein derzeit ausgeführter Worker abgebrochen wird, während der nächste geplant wird.
  • WorkManager führt Tests mit Threads durch, die der Produktion entsprechen. Mit ExecutorsMode.PRESERVE_EXECUTORS können Sie die in Configuration festgelegten Executors beibehalten und den echten Hauptthread verwenden.
  • Coroutines APIs wie CoroutineWorker wurden aus dem zusätzlichen Artefakt work-runtime-ktx in das Hauptartefakt work-runtime verschoben. work-runtime-ktx ist jetzt leer.

API-Änderungen

  • Der Konstruktor von WorkInfo ist jetzt öffentlich. Das kann bei Tests nützlich sein. (Ia00b6, b/209145335)
  • work-runtime-ktx ist jetzt leer. CoroutineWorker und andere kotlinspezifische Dienstprogramme sind jetzt im Haupt-work-runtime-Artefakt verfügbar. (I71a9a)
  • Die Methode setNextScheduleTimeOverride wurde hinzugefügt, mit der sich regelmäßige Arbeitszeiten genau festlegen lassen (I3b4da)
  • getEarliestRunTimeMillis wurde in getNextScheduleTimeMillis umbenannt. (I2bd7a)
  • Die Informationen zur nächsten geplanten Ausführungszeit werden WorkInfo hinzugefügt. (I797e4)
  • WorkInfo werden Informationen zur anfänglichen Verzögerung und zur Periodizität hinzugefügt. (I52f2f)
  • Methode zum Beobachten von Mitarbeitern über Workflows über die Methoden getWorkInfosByTagFlow, getWorkInfoByIdFlow, getWorkInfosForUniqueWorkFlow und getWorkInfosFlow hinzugefügt (If122a)
  • Fehlende @RequiresApi(...)-Anmerkungen zu den Konstruktoren und Properties von Einschränkungen hinzugefügt. Sie sind jetzt mit entsprechenden Anmerkungen zu Settern in Constraints.Builder abgeglichen, die aus frühen Versionen von WorkManager stammen. (I6d7d2)
  • WorkManager hat jetzt ein separates Limit für Content-URI-Worker, um ihnen garantierte Slots in JobScheduler zuzuweisen und so zu verhindern, dass bei hoher Auslastung Inhalte nicht aktualisiert werden. Das Limit kann über Configuration.Builder.setContentUriTriggerWorkersLimit konfiguriert werden. (Ic128f)
  • WorkInfo werden Einschränkungen hinzugefügt. (I162c0)

Version 2.8

Version 2.8.1

22. März 2023

androidx.work:work-*:2.8.1 wird veröffentlicht. Version 2.8.1 enthält diese Commits.

Fehlerkorrekturen

  • ANR in RescheduleReceiver wurde korrigiert, da zuvor zwei gleichzeitige Übertragungen nicht richtig verarbeitet wurden. (b/236906724)

Version 2.8.0

8. Februar 2023

androidx.work:work-*:2.8.0 wird veröffentlicht. Version 2.8.0 enthält diese Commits.

Wichtige Änderungen seit Version 2.7.0

Neue Funktionen

API-Änderungen

  • WorkManager.updateWork wurde hinzugefügt, um Aufgaben zu aktualisieren und dabei die ursprüngliche Einreihungszeit und die Verknüpfung beizubehalten.(I9a248, b/219446409)
  • ExistingPeriodicWorkPolicy.UPDATE wurde hinzugefügt. Mit dieser Richtlinie können Sie ein periodisches Werk anhand des Namens aktualisieren. Sie ähnelt der vorhandenen REPLACE, ist aber weniger aufdringlich: Ein Worker wird nicht abgebrochen, wenn er gerade ausgeführt wird, und die Einreihtezeit bleibt erhalten. Anfangsverzögerung und ‑zeitraum werden nicht anhand der Aktualisierungszeit, sondern anhand der ursprünglichen Einreihtezeit berechnet. REPLACE wurde eingestellt, um Verwechslungen zwischen den sehr ähnlich klingenden REPLACE und UPDATE zu vermeiden. Wenn Sie die vorherige Semantik von REPLACE beibehalten möchten, können Sie das neu hinzugefügte CANCEL_AND_REENQUEUE verwenden, das mit REPLACE identisch ist. (I985ed, b/219446409)
  • Es ist jetzt möglich, Planungsausnahmen zu erfassen, indem Consumer<Throwable> über setSchedulingExceptionHandler bereitgestellt wird.
  • Es ist jetzt möglich, über setInitializationExceptionHandler eine Consumer<Throwable> anzugeben, um festzustellen, ob beim Initialisieren von WorkManager Probleme aufgetreten sind.
  • Die Inline-Hilfe für OneTimeWorkRequest und PeriodicWorkRequest wurde von androidx.work:work-runtime-ktx zu 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 für RxJava 3 gibt jetzt setForeground zurück, das Completable zurückgibt, anstelle von setForegroundInfoAsync, das ListenableFuture zurückgibt.
  • Bei RxWorker für RxJava 2 und RxJava 3 gibt getForegroundInfo Single zurück, was anstelle von getForegroundInfoAsync verwendet werden kann, das ListenableFuture zurückgibt. (b/203851459)
  • Constraints können jetzt direkt erstellt werden, anstatt Constraints.Builder zu verwenden. Das ist für Kotlin-Nutzer praktisch. (Idc390, b/137568653)
  • Es wurde die Möglichkeit hinzugefügt, zu prüfen, ob WorkManager initialisiert wurde. Außerdem wurde eine neue getConfiguration() API für Bibliotheksentwickler hinzugefügt, mit der die Konfiguration abgerufen werden kann, mit der WorkManager initialisiert wurde. (I6eff3, b/212300336)

Fehlerkorrekturen

  • Ein Problem mit dem gierigen Scheduler wurde behoben, das verhinderte, dass Worker bei hoher Auslastung sofort ausgeführt wurden. (I9686b, b/248111307)
  • @RequiresPermission wurde APIs hinzugefügt, für die die Berechtigung POST_NOTIFICATIONS in SDK 33 und höher gewährt werden muss. (Ie542e, b/238790278)
  • Übertragen Sie Stornierungen im CoroutineScope an den ListenableFuture, wenn Sie suspendCancellableCoroutine verwenden.

Version 2.8.0-rc01

7. Dezember 2022

androidx.work:work-*:2.8.0-rc01 wird veröffentlicht. Version 2.8.0-rc01 enthält diese Commits.

Neue Funktionen

  • Keine neuen Funktionen in diesem Release. Dies ist hauptsächlich eine Versionsaktualisierung.

Version 2.8.0-beta02

9. November 2022

androidx.work:work-*:2.8.0-beta02 wird veröffentlicht. Version 2.8.0-beta02 enthält diese Commits.

Fehlerkorrekturen

  • Die equals-Methode in WorkInfo wurde korrigiert, da zuvor keine Informationen zur neuen Generation berücksichtigt wurden. (4977cc)

Version 2.8.0-beta01

5. Oktober 2022

androidx.work:work-*:2.8.0-beta01 wird veröffentlicht. Version 2.8.0-beta01 enthält diese Commits.

Fehlerkorrekturen

  • Ein Problem mit dem gierigen Scheduler wurde behoben, das verhinderte, dass Worker bei hoher Auslastung sofort ausgeführt wurden. (I9686b, b/248111307)

Version 2.8.0-alpha04

7. September 2022

androidx.work:work-*:2.8.0-alpha04 wird veröffentlicht. Version 2.8.0-alpha04 enthält diese Commits.

API-Änderungen

  • WorkerInfo.getGeneration() 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 eine neuere Generation als die des aktuell ausgeführten Workers zurückgeben, wenn während der Ausführung des Workers eine Aktualisierung stattgefunden hat. (I665c5, b/219446409) (I128a9, b/219446409)
  • InitializationExceptionHandler wurde hinzugefügt, ein Ausnahme-Handler, mit dem festgestellt werden kann, ob beim Initialisieren von WorkManager Probleme aufgetreten sind. (I061de)

Version 2.8.0-alpha03

10. August 2022

androidx.work:work-*:2.8.0-alpha03 wird veröffentlicht. Version 2.8.0-alpha03 enthält diese Commits.

Neue Funktionen

  • Es wurde eine Möglichkeit hinzugefügt, WorkRequests auf nicht störende Weise zu aktualisieren, wobei die ursprüngliche Einreihungszeit, die Verknüpfung usw. beibehalten werden. Weitere Informationen finden Sie unter WorkManager.updateWork und ExistingPeriodicWorkPolicy.UPDATE.

API-Änderungen

  • WorkManager.updateWork wurde hinzugefügt, um Aufgaben zu aktualisieren und dabei die ursprüngliche Einreihungszeit und die Verknüpfung beizubehalten.(I9a248, b/219446409)
  • ExistingPeriodicWorkPolicy.UPDATE wurde hinzugefügt. Mit dieser Richtlinie können Sie ein periodisches Werk anhand des Namens aktualisieren. Sie ähnelt der vorhandenen REPLACE, ist aber weniger aufdringlich: Ein Worker wird nicht abgebrochen, wenn er gerade ausgeführt wird, und die Einreihtezeit bleibt erhalten. Anfangsverzögerung und ‑zeitraum werden nicht anhand der Aktualisierungszeit, sondern anhand der ursprünglichen Einreihtezeit berechnet. REPLACE wurde eingestellt, um Verwechslungen zwischen REPLACE und UPDATE zu vermeiden, die sich sehr ähnlich sind. Wenn Sie die vorherige Semantik von REPLACE beibehalten möchten, können Sie das neu hinzugefügte CANCEL_AND_REENQUEUE verwenden, das mit REPLACE identisch ist. (I985ed, b/219446409)
  • Sie können Ausnahmen bei der Planung abfangen, indem Sie eine SchedulingExceptionHandler definieren. (I033eb)
  • Die Inline-Hilfe für OneTimeWorkRequest und PeriodicWorkRequest wurde von androidx.work:work-runtime-ktx zu androidx.work:work-runtime verschoben (I0010f, b/209145335)

Fehlerkorrekturen

  • @RequiresPermission wurde APIs hinzugefügt, für die die Berechtigung POST_NOTIFICATIONS in SDK 33 und höher gewährt werden muss. (Ie542e, b/238790278)

Version 2.8.0-alpha02

6. April 2022

androidx.work:work-*:2.8.0-alpha02 wird veröffentlicht. Version 2.8.0-alpha02 enthält diese Commits.

API-Änderungen

  • Constraints können jetzt direkt erstellt werden, anstatt Builder zu verwenden. Das ist für Kotlin-Nutzer praktisch. (Idc390, b/137568653)
  • Es wurde die Möglichkeit hinzugefügt, zu prüfen, ob WorkManager initialisiert wurde. Außerdem wurde eine neue getConfiguration() API für Bibliotheksentwickler hinzugefügt, mit der die Konfiguration abgerufen werden kann, mit der WorkManager initialisiert wurde. (I6eff3, b/212300336)

Version 2.8.0-alpha01

12. Januar 2022

androidx.work:work-*:2.8.0-alpha01 wird veröffentlicht. Version 2.8.0-alpha01 enthält diese Commits.

API-Änderungen

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

Fehlerkorrekturen

  • Übertragen Sie Stornierungen im CoroutineScope an den ListenableFuture, wenn Sie suspendCancellableCoroutine verwenden. (I77e63)

Version 2.7

Version 2.7.1

17. November 2021

androidx.work:work-*:2.7.1 wird veröffentlicht. Version 2.7.1 enthält diese Commits.

Fehlerkorrekturen

  • Stornierungen im CoroutineScope werden bei Verwendung von suspendCancellableCoroutine an den ListenableFuture weitergegeben. (I77e63)
  • Es wird sofort eine Ausnahme ausgelöst, wenn verzögerte Arbeitsanfragen als vorrangig gekennzeichnet werden. bef1762

Version 2.7.0

13. Oktober 2021

androidx.work:work-*:2.7.0 wird veröffentlicht. Version 2.7.0 enthält diese Commits.

Wichtige Änderungen seit Version 2.6.0

  • WorkManager führt eine neue WorkRequest.Builder.setExpedited(...) API ein, die bei den Einschränkungen für Dienste im Vordergrund in Android 12 hilft.

  • Wenn Sie setExpedited(...) verwenden, delegiert WorkManager ab Android 12 an beschleunigte Jobs im JobScheduler. Bei früheren Android-Versionen wird die Abwärtskompatibilität durch die Delegierung an einen Dienst im Vordergrund sichergestellt.

Version 2.7.0-rc01

29. September 2021

androidx.work:work-*:2.7.0-rc01 wird veröffentlicht. Version 2.7.0-rc01 enthält diese Commits.

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

Version 2.7.0-beta01

1. September 2021

androidx.work:work-*:2.7.0-beta01 wird veröffentlicht. Version 2.7.0-beta01 enthält diese Commits.

Neue Funktionen

  • Reduzierung von SQLite-Konflikten bei der Initialisierung von WorkManager durch mehrere Prozesse

API-Änderungen

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

Fehlerkorrekturen

  • Bessere Fehlermeldung für Mitarbeiter, die die beschleunigte Bearbeitung nicht implementiert haben.getForegroundInfoAsync() (aosp/1809376)

Version 2.7.0-alpha05

21. Juli 2021

androidx.work:work-*:2.7.0-alpha05 wird veröffentlicht. Version 2.7.0-alpha05 enthält diese Commits.

Diese Version enthält außerdem Fehlerkorrekturen aus der WorkManager-Version 2.6.0-beta02.

Version 2.7.0-alpha04

2. Juni 2021

androidx.work:work-*:2.7.0-alpha04 wird veröffentlicht.

Diese Version enthält auch die Änderungen aus der Version 2.6.0-beta01.

API-Änderungen

  • ListenableWorker.setForegroundAsync() ist nicht mehr eingestellt.
  • Wir empfehlen, nach Möglichkeit die WorkRequest.Builder.setExpedited(...) API zu verwenden. Um Situationen besser zu unterstützen, in denen die App nicht den Einschränkungen für Dienste im Vordergrund unterliegt, können Entwickler die ListenableWorker.setForegroundAsync() API verwenden.
  • Wenn ListenableWorker.setForegroundAsync() aufgerufen wird, während für die App Einschränkungen für Dienste im Vordergrund gelten, wird die ForegroundServiceStartNotAllowedException ausgelöst.

Fehlerkorrekturen

  • Wenn beschleunigte Jobs neu geplant werden, sind sie nicht mehr beschleunigt. Sie werden zu Regeljobs.

Version 2.7.0-alpha03

21. April 2021

androidx.work:work-*:2.7.0-alpha03 wird veröffentlicht. Version 2.7.0-alpha03 enthält diese Commits.

Neue Funktionen

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

  • WorkManager 2.6.0-alpha02: Es wurde eine RemoteCoroutineWorker hinzugefügt, 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 veröffentlicht. Version 2.7.0-alpha02 enthält diese Commits.

Fehlerkorrekturen

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

Version 2.7.0-alpha01

18. Februar 2021

androidx.work:work-*:2.7.0-alpha01 wird veröffentlicht. Version 2.7.0-alpha01 enthält diese Commits.

Neue Funktionen

  • Mit WorkManager wird eine neueWorkRequest.Builder.setExpedited(...) API eingeführt, die die Einschränkungen für Dienste im Vordergrund in Android 12 berücksichtigt.

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

    Diese API ersetzt die setForegroundAsync(...)-/setForeground(...)-APIs, die jetzt verworfen wurden.

    Wenn Sie setExpedited(...) verwenden, delegiert WorkManager ab Android 12 an beschleunigte Jobs in JobScheduler. Gleichzeitig wird für frühere Android-Versionen die Abwärtskompatibilität durch die Delegierung an Dienste im Vordergrund sichergestellt.

API-Änderungen

  • Unterstützung für beschleunigte WorkRequests hinzufügen

Version 2.6.0

Version 2.6.0

1. September 2021

androidx.work:work-*:2.6.0 wird veröffentlicht. Version 2.6.0 enthält diese Commits.

Wichtige Änderungen seit Version 2.5.0

  • WorkManager verwendet jetzt androidx.startup, um WorkManager zu initialisieren. Wenn Sie tools:node="remove" verwendet haben, die ContentProvider, die in der Vergangenheit zum Initialisieren von WorkManager verwendet wurde, müssen Sie stattdessen Folgendes tun.

    <provider
        android:name="androidx.startup.InitializationProvider"
        android:authorities=\"${applicationId}.androidx-startup"
        android:exported="false"
        tools:node=\"merge">
        <!-- If you are using androidx.startup to initialize other components -->
        <meta-data
            android:name="androidx.work.WorkManagerInitializer"
            android:value="androidx.startup"
            tools:node="remove" />
     </provider>
    
    <!-- If you want to disable android.startup completely. -->
     <provider
                android:name="androidx.startup.InitializationProvider"
                android:authorities="${applicationId}.androidx-startup"
                tools:node="remove" />
    
  • Unterstützung für Worker hinzugefügt, die in jedem Prozess ausgeführt werden können. (Iaf200)

  • Es wurde eine RemoteCoroutineWorker hinzugefügt, eine Implementierung von RemoteListenableWorker, die an einen Remoteprozess gebunden werden kann. (I30578)

Version 2.6.0-rc01

4. August 2021

androidx.work:work-*:2.6.0-rc01 wird veröffentlicht. Version 2.6.0-rc01 enthält diese Commits.

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

Version 2.6.0-beta02

21. Juli 2021

androidx.work:work-*:2.6.0-beta02 wird veröffentlicht. Version 2.6.0-beta02 enthält diese Commits.

Fehlerkorrekturen

  • RemoteWorkManager wird jetzt richtig von RemoteWorkManagerService getrennt, sodass RemoteWorkManagerService richtig bereinigt werden kann. aosp/1730694
  • RemoteListenableWorker wird jetzt korrekt von RemoteWorkerService getrennt, sodass RemoteWorkerService korrekt bereinigt werden kann. aosp/1743817
  • ForceStopRunnable wird jetzt nur noch im primären App-Prozess ausgeführt. Dies ist eine Optimierung und verhindert Ressourcenkonflikte bei Apps, die mehrere Prozesse verwenden. aosp/1749180, aosp/1761729

Version 2.6.0-beta01

2. Juni 2021

androidx.work:work-*:2.6.0-beta01 wird veröffentlicht. Version 2.6.0-beta01 enthält diese Commits.

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

Version 2.6.0-alpha02

21. April 2021

androidx.work:work-*:2.6.0-alpha02 wird veröffentlicht. Version 2.6.0-alpha02 enthält diese Commits.

Neue Funktionen

  • Es wird Unterstützung für Worker hinzugefügt, die in jedem Prozess ausgeführt werden können. (Iaf200)

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

API-Änderungen

  • Unterstützung für die Netzwerkeinschränkung TEMPORARILY_UNMETERED hinzugefügt. (I08d5e)
  • Unterstützung für Multi-Process Worker für setProgressAsync() (Ib6d08)
  • Machen Sie WorkManagerInitializer öffentlich, damit 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 veröffentlicht. Version 2.6.0-alpha01 enthält diese Commits.

Neue Funktionen

  • WorkManager verwendet jetzt androidx.startup, um WorkManager zu initialisieren. Bisher wurde dies von androidx.work.impl.WorkManagerInitializer durchgeführt. (aosp/1608813)

    Wenn Sie tools:node="remove" verwendet haben, um den Prozesslebenszyklus in der Vergangenheit zu initialisieren, gehen Sie stattdessen so vor:ContentProvider

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

    (oder)

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

API-Änderungen

  • Fügen Sie eine Result.getOutputData() API hinzu, die die outputData des ListenableWorker zurückgibt. (Ie51e3)

Fehlerkorrekturen

  • Es wurde eine Problemumgehung für einen OEM-Fehler hinzugefügt, durch den bei Verwendung von AlarmManager APIs eine SecurityException ausgelöst wird. (aosp/1587518)

Version 2.5.0

Version 2.5.0

27. Januar 2021

androidx.work:work-*:2.5.0 wird veröffentlicht. Version 2.5.0 enthält diese Commits.

Wichtige Änderungen seit Version 2.4.0

  • Ein neues :work:work-multiprocess-Artefakt für Apps, die mehrere Prozesse verwenden. Dies führt zu Leistungssteigerungen, da die Planung von Arbeitsanfragen in einem einzigen Prozess zusammengefasst wird.
    • Wenn Sie work-multiprocess verwenden möchten, definieren Sie eine Abhängigkeit von: implementation "androidx.work:work-multiprocess:2.5.0"
    • Weisen Sie mit Configuration.Builder.setDefaultProcessName(String) einen primären Prozess zu.
    • Wenn Sie work-multiprocess verwenden, sollten Sie auch RemoteWorkManager verwenden, um Ihre WorkRequests zu verwalten. RemoteWorkManager wendet sich immer an den angegebenen Prozess. Der In-Process-Scheduler wird ebenfalls im angegebenen Prozess ausgeführt.
  • Manchmal kann ActivityManager die Instanz JobService nicht instanziieren, um einen Job zu starten. Dies führt dazu, dass der zugrunde liegende Job aufgrund eines Plattformfehlers stillschweigend gelöscht wird. WorkManager sorgt jetzt dafür, dass es für jede einzelne WorkRequest Sicherungsjobs gibt, wenn eine Application durch Abgleichjobs initialisiert wird. Dies verbessert die Zuverlässigkeit der Jobausführung erheblich. (b/172475041, aosp/1489577)
  • WorkManager schränkt das Datenbankwachstum ein, indem die Pufferdauer reduziert wird, in der WorkRequests nach Abschluss eines WorkRequest erfasst werden. Die Dauer betrug zuvor 7 Tage. Sie wurde auf 1 Tage plus die Dauer von keepResultsForAtLeast reduziert. (aosp/1419708)
  • Die TestListenableWorkerBuilder unterstützt jetzt die reified Klasse, die ListenableWorker erweitert, um Tests zu vereinfachen. (aosp/1443299, b/169787349)
  • Der WorkManager-Inspektor ist jetzt in Android Studio Arctic Fox verfügbar.

Version 2.5.0-rc01

13. Januar 2021

androidx.work:work-*:2.5.0-rc01 wird veröffentlicht. Version 2.5.0-rc01 enthält diese Commits.

Fehlerkorrekturen

  • Ein Fehler wurde behoben, bei dem getWorkInfosLiveData bei der Verwendung der WorkQuery-basierten API nicht richtig ungültig gemacht wurde, nachdem Entitäten aktualisiert wurden. (aosp/1540566, b/173769028)
  • Es wurde ein Fehler behoben, durch den Datenbanktransaktionen in einigen seltenen Fällen nicht als erfolgreich markiert wurden. Das führt auf einigen Motorola-Geräten zu Problemen. (aosp/1535368, b/175944460)
  • Ein Fehler wurde behoben, durch den NoSuchElementExceptions beim Versuch, die Bindung zu einem toten Prozess aufzuheben, ignoriert wurden. (aosp/1530589)
  • ConstraintTrackingWorker wurde verbessert, sodass ein ListenableWorker nur dann beendet wird, wenn es noch nicht beendet wurde. (aosp/1496844, b/172946965)
  • androidx.work-Bibliotheken auf Java 8 umstellen (Ibd2f2)

Version 2.5.0-beta02

2. Dezember 2020

androidx.work:work-*:2.5.0-beta02 wird veröffentlicht. Version 2.5.0-beta02 enthält diese Commits.

Fehlerkorrekturen

  • Ein Fehler in androidx.work:work-multiprocess wurde behoben, bei dem WorkManager den aufrufenden Thread versehentlich blockierte, wenn versucht wurde, eine Bindung an den angegebenen Prozess herzustellen. (aosp/1475538)
  • Ein Fehler wurde behoben, bei dem PeriodicWorkRequests nicht richtig abgeglichen wurden. (b/172475041, aosp/1489577)
  • Es wurde eine Problemumgehung für einen Plattformfehler beim Beenden des Dienstes im Vordergrund bei Verwendung der setForeground* APIs hinzugefügt. (b/170924044, aosp/1489901)

Version 2.5.0-beta01

28. Oktober 2020

androidx.work:work-*:2.5.0-beta01 wird veröffentlicht. Version 2.5.0-beta01 enthält diese Commits.

Neue Funktionen

  • WorkManager begrenzt automatisch die Anzahl der WorkRequests, die vom In-Process-Scheduler abgerufen werden können. Die Anfragen werden weiterhin in FIFO-Reihenfolge ausgeführt. (aosp/1455228)
  • WorkManager versucht, die Wiederherstellung auszuführen, wenn sich der Datenspeicher der Anwendung in einem fehlerhaften Zustand befindet. (aosp/1463103)

Fehlerkorrekturen

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

Version 2.5.0-alpha03

14. Oktober 2020

androidx.work:work-*:2.5.0-alpha03 wird veröffentlicht. Version 2.5.0-alpha03 enthält diese Commits.

API-Änderungen

  • Für TestListenableWorkerBuilder und TestWorkerBuilder werden keine Rohtypen verwendet. (I883ad, b/169787349)

Fehlerkorrekturen

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

Version 2.5.0-alpha02

16. September 2020

androidx.work:work-*:2.5.0-alpha02 wird veröffentlicht. Version 2.5.0-alpha02 enthält diese Commits.

Neue Funktionen

  • Fügen Sie WorkQuery eine API hinzu, damit Sie ids zum Abfragen von WorkInfos verwenden können. (aosp/1412372, b/157335295)
  • Mit einem neuen Artefakt (androidx.work:work-multiprocess:*) unterstützt WorkManager Apps, die mehrere Prozesse verwenden, besser. Dieses neue Artefakt hilft, einige Probleme zu lösen, die bei großen Apps auftreten, darunter:
    • WorkManager muss in der Regel in jedem App-Prozess initialisiert werden. Das ist nicht optimal, da es zu mehr SQLite-Konflikten kommt, was wiederum zu anderen Problemen führt. WorkManager bietet jetzt neue APIs, mit denen Sie einen primären App-Prozess mit Configuration#setDefaultProcessName(processName) angeben können. processName ist ein vollständig qualifizierter Prozessname, der wie packageName:processName aussieht (z.B. com.example:remote).
    • Eine Reihe neuer APIs: RemoteWorkManager und RemoteWorkContinuation bis enqueue, cancel und query-Arbeitsanfragen. Diese APIs enthalten keine LiveData-Varianten, um SQLite-Konflikte zwischen mehreren Prozessen zu vermeiden. Alle Aufrufe von enqueue, cancel und query werden mithilfe von AIDL an einen primary-App-Prozess weitergeleitet und geben eine fließende ListenableFuture zurück. (aosp/1392657, aosp/1411210, aosp/1412215, aosp/1417713)

API-Änderungen

  • WorkManager entfernt jetzt abgeschlossene WorkRequests, die keine unvollständigen Abhängigkeiten haben, aggressiver. Die Pufferdauer wurde von 7 Tagen auf 1 Tage geändert. (aosp/1419708)

Fehlerkorrekturen

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

Version 2.5.0-alpha01

19. August 2020

androidx.work:work-*:2.5.0-alpha01 wird veröffentlicht. Version 2.5.0-alpha01 enthält diese Commits.

Neue Funktionen

  • Änderungen an internen APIs, die es uns ermöglichen, in Zukunft bessere Tools mit WorkManager bereitzustellen. Weitere Informationen folgen demnächst.

Fehlerkorrekturen

  • SecurityExceptions beim Überwachen des Netzwerkstatus auf einigen Geräten verarbeiten (aosp/1396969)

Externer Beitrag

  • Fehlerkorrektur in der Dokumentation für ArrayCreatingInputMerger von Zac Sweers (github/43).

Version 2.4.0

Version 2.4.0

22. Juli 2020

androidx.work:work-*:2.4.0 wird veröffentlicht. Version 2.4.0 enthält diese Commits.

Wichtige Änderungen seit Version 2.3.0

  • Der In-Process-Scheduler von WorkManager ist jetzt leistungsfähiger. Bisher wurde bei der Ausführung von Scheduler nur berücksichtigt, ob die Aufgaben nicht verzögert wurden und deren Einschränkungen erfüllt waren. Jetzt überwacht der In-Process-Scheduler WorkRequests, die in Zukunft ausgeführt werden könnten, einschließlich PeriodicWorkRequests. Für die In-Process-Scheduler gelten ebenfalls keine Planungslimits. Sie ist jedoch auf die Größe der Executor beschränkt, die von WorkManager verwendet wird. Das bedeutet, dass die Anwendung jetzt viel mehr WorkRequests ausführen kann, wenn sie im Vordergrund ist. Zur Verwaltung der Ausführung verzögerter Aufgaben im Vordergrund wird in WorkManager außerdem eine neue konfigurierbare RunnableScheduler eingeführt. (aosp/1185778)
  • WorkManager unterstützt jetzt RxJava 3. Wenn Sie RxJava 3 verwenden möchten, sollten Sie die folgende Abhängigkeit angeben: implementation "androidx.work:work-rxjava3:2.4.0". (aosp/1277904)
  • Es ist jetzt möglich, mithilfe eines WorkQuery nach WorkInfos zu suchen. Das ist nützlich, wenn Entwickler WorkInfos anhand einer Kombination mehrerer Attribute abfragen möchten. Weitere Informationen finden Sie unter WorkQuery.Builder.fromStates(...), WorkQuery.Builder. fromTags(...) oder WorkQuery.Builder.fromUniqueWorkNames(...). (aosp/1253230, b/143847546)
  • Fügen Sie die Möglichkeit hinzu, Diagnoseinformationen von WorkManager anzufordern:

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

    Sie enthält viele nützliche Informationen, darunter:

    • Aufgabenanfragen, die in den letzten 24 Stunden abgeschlossen wurden.
    • WorkRequests, die derzeit ausgeführt werden.
    • Geplante Arbeitsanfragen (aosp/1235501)
  • Fügen Sie ExistingWorkPolicy.APPEND_OR_REPLACE hinzu. Dieser Befehl ähnelt APPEND, ersetzt aber eine Kette, deren Voraussetzungen abgebrochen oder fehlgeschlagen sind. (b/134613984, aosp/1199640)

  • Es soll möglich sein, eine benutzerdefinierte RunnableScheduler hinzuzufügen, um Arbeitsanfragen zu verfolgen, die in Zukunft ausgeführt werden müssen. Dieser wird vom In-Process-Scheduler verwendet. (aosp/1203944)

  • Unterstützung für das dynamische Hinzufügen von Fabriken, an die delegiert werden soll, bei Verwendung einer DelegatingWorkerFactory hinzufügen. (b/156289105, aosp/1309745)

  • Passen Sie das Tracking für BATTERY_NOT_LOW-Einschränkungen an die Plattform an. (aosp/1312583)

  • Der In-Process-Scheduler verwendet jetzt bessere APIs, um den Namen des Prozesses zu ermitteln. Dies ist nützlich, um Apps mit mehreren Prozessen besser zu unterstützen. (aosp/1324732)

  • Neue Lint-Regeln, die Folgendes erzwingen:

    • Verwendung der richtigen foregroundServiceType bei Verwendung von setForegroundAsync() APIs (b/147873061, aosp/1215915)
    • JobScheduler-IDs angeben, die WorkManager verwenden soll, wenn JobService APIs direkt verwendet werden. aosp/1223567
    • Es wurde eine neue Lint-Regel hinzugefügt, die dafür sorgt, dass ListenableWorker-Implementierungen jetzt public sind, wenn die Standard-WorkerFactory verwendet wird. (aosp/1291262)
  • Aufrufe von setForegroundAsync(), die nicht vor Abschluss einer ListenableWorker abgeschlossen werden, werden jetzt über eine IllegalStateException in der zurückgegebenen ListenableFuture signalisiert. (aosp/1262743)

  • Ein Fehler wurde behoben, durch den die ForegroundService nicht angehalten wurde, nachdem eine Worker im Vordergrund unterbrochen wurde. (b/155579898, 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 veröffentlicht. Version 2.4.0-rc01 enthält diese Commits.

Fehlerkorrekturen

  • Der In-Process-Scheduler verwendet jetzt bessere APIs, um den Namen des Prozesses zu ermitteln. Dies ist nützlich, um Apps mit mehreren Prozessen besser zu unterstützen. (aosp/1324732)

Version 2.4.0-beta01

20. Mai 2020

androidx.work:work-gcm:2.4.0-beta01, androidx.work:work-runtime:2.4.0-beta01, androidx.work:work-runtime-ktx:2.4.0-beta01, androidx.work:work-rxjava2:2.4.0-beta01 und androidx.work:work-testing:2.4.0-beta01 werden losgelassen. Version 2.4.0-beta01 enthält diese Commits.

Fehlerkorrekturen

  • Ein Fehler wurde behoben, durch den die ForegroundService nicht angehalten wurde, nachdem eine Worker im Vordergrund unterbrochen wurde. (b/155579898, 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)
  • Unterstützung für das dynamische Hinzufügen von Fabriken, an die delegiert werden soll, bei Verwendung einer DelegatingWorkerFactory hinzufügen. (b/156289105, aosp/1309745)
  • Passen Sie das Tracking für BATTERY_NOT_LOW-Einschränkungen an die Plattform an. (aosp/1312583)

Version 2.4.0-alpha03

29. April 2020

androidx.work:work-*:2.4.0-alpha03 wird veröffentlicht. Version 2.4.0-alpha03 enthält diese Commits.

Neue Funktionen

  • WorkManager unterstützt jetzt RxJava 3. Wenn Sie RxJava 3 verwenden möchten, sollten Sie die folgende Abhängigkeit angeben: implementation "androidx.work:work-rxjava3:2.4.0-alpha03". (aosp/1277904)
  • Es wurde eine neue Lint-Regel hinzugefügt, die dafür sorgt, dass ListenableWorker-Implementierungen jetzt public sind, wenn die Standard-WorkerFactory verwendet wird. (aosp/1291262)

API-Änderungen

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

Fehlerkorrekturen

Version 2.4.0-alpha02

1. April 2020

androidx.work:work-*:2.4.0-alpha02 wird veröffentlicht. Version 2.4.0-alpha02 enthält diese Commits.

Neue Funktionen

  • Es wurde eine neue Lint-Regel hinzugefügt, die warnt, wenn für WorkRequest sowohl Constraints.setRequiresCharging(...) als auch Constraints.setRequiresDeviceIdle(...) erforderlich sind. Einige Geräte werden nie gleichzeitig geladen und inaktiv genutzt. Solche Anfragen werden also weniger häufig ausgeführt als erwartet. (aosp/1253840)

API-Änderungen

  • Es ist jetzt möglich, mithilfe eines WorkQuery nach WorkInfos zu suchen. Das ist nützlich, wenn Entwickler WorkInfos anhand einer Kombination mehrerer Attribute abfragen möchten. Weitere Informationen finden Sie unter WorkQuery.Builder withStates(...), WorkQuery.Builder withTags(...) oder WorkQuery.Builder withUniqueWorkNames(...). (aosp/1253230, b/143847546)

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

Fehlerkorrekturen

  • Die Lint-Regel, die nach ungültigen Intervalldauern für PeriodicWorkRequests sucht, wurde korrigiert. (aosp/1254846, b/152606442)

Version 2.4.0-alpha01

4. März 2020

androidx.work:work-*:2.4.0-alpha01 wird veröffentlicht. Version 2.4.0-alpha01 enthält diese Commits.

Neue Funktionen

  • Der In-Process-Scheduler von WorkManager ist jetzt leistungsfähiger. Bisher berücksichtigte der In-Process-Scheduler nur die Ausführung von Aufgaben, die nicht verzögert wurden und deren Einschränkungen erfüllt waren. Jetzt überwacht der In-Process-Scheduler WorkRequests, die in Zukunft ausgeführt werden könnten, einschließlich PeriodicWorkRequests. Der In-Process-Scheduler hält auch Planungslimits nicht ein, ist aber auf die Größe des von WorkManager verwendeten Executor beschränkt. Das bedeutet, dass die Anwendung jetzt viel mehr WorkRequests ausführen kann, wenn sie im Vordergrund ist. (aosp/1185778)

  • Es ist jetzt möglich, mit adb shell am broadcast -a "androidx.work.diagnostics.REQUEST_DIAGNOSTICS" -p "<your_app_package_name>" Diagnoseinformationen von WorkManager anzufordern. Sie enthält viele nützliche Informationen, darunter:

    • Aufgabenanfragen, die in den letzten 24 Stunden abgeschlossen wurden.
    • WorkRequests, die derzeit ausgeführt werden.
    • Geplante Arbeitsanfragen (aosp/1235501)
  • Neue Lint-Regeln, die Folgendes erzwingen:

    • Verwendung der richtigen foregroundServiceType bei Verwendung von setForegroundAsync() APIs (b/147873061, aosp/1215915)
    • JobScheduler-IDs angeben, die WorkManager verwenden sollte, wenn JobService APIs direkt verwendet werden. (aosp/1223567)

API-Änderungen

  • Fügen Sie ExistingWorkPolicy.APPEND_OR_REPLACE hinzu. Dieser Befehl ähnelt APPEND, ersetzt aber eine Kette, für die die Voraussetzungen nicht erfüllt sind oder die abgebrochen wurde. (b/134613984, aosp/1199640)

  • Es sollte möglich sein, eine benutzerdefinierte RunnableScheduler hinzuzufügen, um WorkRequests zu erfassen, die in Zukunft ausgeführt werden müssen. Dieser wird vom In-Process-Scheduler verwendet. (aosp/1203944)

Fehlerkorrekturen

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

Version 2.3.4

Version 2.3.4

18. März 2020

androidx.work:work-*:2.3.4 wird veröffentlicht. Version 2.3.4 enthält diese Commits.

Fehlerkorrekturen

  • Ein Fehler wurde behoben, durch den nach Ablauf des 10-Minuten-Ausführungszeitraums mehrere Instanzen eines lang laufenden Worker ausgeführt wurden. (aosp/1247484, b/150553353)
  • Behebung eines Problems mit dem Lint-IssueRegistry von WorkManager. Vielen Dank an @ZacSweers von Slack für den Beitrag. (aosp/1217923)

Version 2.3.3

Version 2.3.3

4. März 2020

androidx.work:work-*:2.3.3 wird veröffentlicht. Version 2.3.3 enthält diese Commits.

Fehlerkorrekturen

  • Ein Fehler wurde behoben, bei dem eine Worker nach einer Unterbrechung nicht richtig neu geplant wurde. (b/150325687, aosp/1246571)

Version 2.3.2

Version 2.3.2

19. Februar 2020

androidx.work:work-*:2.3.2 werden veröffentlicht. Version 2.3.2 enthält diese Commits.

Fehlerkorrekturen

  • Behoben wurde ein Problem, bei dem WorkManager in seltenen Fällen das Limit von 100 Jobs im JobScheduler überschreitet. (aosp/1226859, b/149092520)
  • Behebung einer Race-Bedingung in ConstraintControllers. (aosp/1220100)
  • Der Dienstlebenszyklus im Vordergrund wurde für langlaufende Worker verbessert. (aosp/1226295)
  • Die Verwaltung der Stornierung von Benachrichtigungen für langlaufende Worker bei der Stornierung des Workers wurde verbessert. (aosp/1228346)

Version 2.3.1

Version 2.3.1

5. Februar 2020

androidx.work:work-*:2.3.1 wird veröffentlicht. Version 2.3.1 enthält diese Commits.

Fehlerkorrekturen

  • Bessere Verwaltung des Lebenszyklus von Notification für langlaufende Worker, 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 stable ab. (aosp/1217729)
  • Es wurden Lint-Regeln hinzugefügt, damit bei Verwendung von foregroundServiceTypes in ForegroundInfo in der AndroidManifest.xml ein foregroundServiceType angegeben wird. (aosp/1214207, b/147873061)

Version 2.3.0

Version 2.3.0

22. Januar 2020

androidx.work:work-*:2.3.0 wird seit 2.3.0-rc01 unverändert veröffentlicht. Version 2.3.0 enthält diese Commits.

Wichtige Änderungen seit Version 2.2.0

  • Unterstützung für lang laufende oder wichtige Aufgaben über ListenableWorker#setForegroundAsync()
  • Unterstützung für den Worker-Fortschritt über ListenableWorker#setProgressAsync().
  • WorkManager enthält jetzt zusätzliche Lint-Regeln, die dazu beitragen, Fehler frühzeitig zu erkennen.

Version 2.3.0-rc01

8. Januar 2020

androidx.work:work-*:2.3.0-rc01 wird veröffentlicht. Version 2.3.0-rc01 enthält diese Commits.

Dieser Release ist mit 2.3.0-beta02 identisch.

Fehlerkorrekturen

  • Das work-testing-Artefakt definiert jetzt 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 veröffentlicht. Version 2.3.0-beta02 enthält diese Commits.

Neue Funktionen

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

API-Änderungen

  • Bei ForegroundInfo müssen Sie jetzt den notificationId angeben, der bei der Verwendung von ListenableWorker.setForegroundAsync() verwendet werden soll. Dies ist eine funktionsgefährdende Änderung. So können Sie mehrere lang laufende Workers parallel ausführen. WorkManager verwaltet auch die Lebensdauer der bereitgestellten Notifications besser. (b/145473554, aosp/1181208, asop/1181216, asop/1183577)

Fehlerkorrekturen

  • Ein Fehler in der AlarmManager-Implementierung wurde behoben, bei dem Wecker nicht richtig bereinigt wurden. (aosp/1156444)
  • Ein Fehler wurde behoben, durch den bei einer leeren Liste von WorkRequests eine falsche WorkContinuation-Kette erstellt wurde. (b/142835274, aosp/1157051)

Änderungen an Abhängigkeiten

  • Für WorkManager wird jetzt Room 2.2.2 verwendet.

Version 2.3.0-beta01

20. November 2019

androidx.work:work-*:2.3.0-beta01 wird veröffentlicht. Version 2.3.0-beta01 enthält diese Commits.

Neue Funktionen

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

Version 2.3.0-alpha03

23. Oktober 2019

androidx.work:work-*:2.3.0-alpha03 wird veröffentlicht. Version 2.3.0-alpha03 enthält diese Commits.

Neue Funktionen

  • Die WorkManager.createCancelPendingIntent() API wurde hinzugefügt, mit der WorkRequests ganz einfach storniert werden können, ohne dass eine weitere Komponente in der AndroidManifest.xml registriert werden muss. Mit dieser API können WorkRequests besonders einfach über Notifications storniert werden. Wir gehen davon aus, dass dies in Version 2.3.0 mit den neuen APIs für den Vordergrund kombiniert wird.
  • WorkManager hängt jetzt von androidx.room:*:2.2.0 stable ab.

API-Änderungen

  • ForegroundInfo.getNotificationType() in ForegroundInfo.getForegroundServiceType() umbenannt, um für mehr Einheitlichkeit mit den zugrunde liegenden Plattform-APIs zu sorgen. (b/142729893, aosp/1143316)

Fehlerkorrekturen

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

Version 2.3.0-alpha02

9. Oktober 2019

androidx.work:work-*:2.3.0-alpha02 wird veröffentlicht. Version 2.3.0-alpha02 enthält diese Commits.

Neue Funktionen

  • WorkManager unterstützt jetzt die Ausführung lang laufender oder wichtiger Aufgaben, die vom Betriebssystem beibehalten werden sollen. Weitere Informationen finden Sie unter ListenableWorker#setForegroundAsync() (oder CoroutineWorker#setForeground() für Kotlin). (aosp/1133636)

API-Änderungen

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

Fehlerkorrekturen

  • WorkManager plant Aufgaben fair, wenn die Anzahl der in der Warteschlange befindlichen WorkRequest die Planungslimits erreicht. (aosp/1105766)
  • WorkManager ruft ListenableWorker#onStopped() nur dann auf, wenn die Arbeit noch nicht abgeschlossen ist. (b/140055777)
  • WorkManager entfernt jetzt Fortschrittsinformationen, wenn ein Worker unterbrochen wird oder seinen Endstatus erreicht. (aosp/1114572)
  • Data hat jetzt eine viel nützlichere toString()Darstellung. (b/140945323)
  • Data hat jetzt eine bessere equals()-Methode. Außerdem wird deepEquals für Array-Typen unterstützt. (b/140922528)
  • WorkManager speichert seine interne Datenbank und seine Einstellungsdateien jetzt in einem Verzeichnis ohne Sicherung. (b/114808216)

Version 2.3.0-alpha01

22. August 2019

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

Neue Funktionen

  • ListenableWorkers können den Fortschritt jetzt über die setProgressAsync() API festlegen. Außerdem wurde in CoroutineWorker eine entsprechende suspend-ing setProgress API und in RxWorker eine setProgress hinzugefügt, die eine Single<Void> zurückgibt. Mit diesen neuen APIs können Arbeiter Fortschrittsinformationen über WorkInfo senden, das eine entsprechende getProgress API hat. (b/79481554)
  • Data hat eine containsKey() API, mit der überprüft werden kann, ob die Eingabedaten für Worker Schlüssel mit dem erwarteten Typ haben. (b/117136838)
  • Data kann jetzt mit Data.toByteArray() und Data.fromByteArray() serialisiert werden. Hinweis: Für Data gibt es keine Versionsgarantien. Sie sollten sie daher nicht speichern oder für die interprozedurale Kommunikation zwischen Anwendungen verwenden. Sie können nur zwischen mehreren Prozessen der gleichen Anwendung verwendet werden.
  • Es ist jetzt möglich, eine InputMergerFactory über Configuration.setInputMergerFactory anzugeben. (b/133273159)

API-Änderungen

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

Fehlerkorrekturen

  • Der In-Process-Scheduler ignoriert jetzt WorkRequests mit der Einschränkung idle. Diese Anfragen werden jetzt nur von JobScheduler verarbeitet, wenn das Gerät tatsächlich idle ist. (aosp/1089779)
  • TestScheduler verwendet jetzt in Tests die angegebene Executor für den internen Task-Ausführer. (aosp/1090749)

Version 2.2.0

Version 2.2.0

15. August 2019

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

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

Wichtige Änderungen in Version 2.2.0 im Vergleich zu Version 2.1.0

androidx.work:work-gcm:2.2.0 ist ein neues Maven-Artefakt, das die Verwendung von GCMNetworkManager als Scheduler unterstützt, wenn Google Play-Dienste für API-Ebenen <= 22 verfügbar sind. Dies ist eine optionale Abhängigkeit, die zu einer zuverlässigeren und leistungsstärkeren Hintergrundverarbeitung bei älteren API-Versionen beiträgt. Wenn Ihre App Google Play-Dienste verwendet, fügen Sie Ihrer Gradle-Datei diese Abhängigkeit hinzu, um automatisch GCMNetworkManager-Unterstützung zu erhalten. Wenn die Play-Dienste nicht verfügbar sind, greift WorkManager auf älteren Geräten weiterhin auf AlarmManager zurück.

Version 2.2.0-rc01

30. Juli 2019

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

Fehlerkorrekturen

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

Version 2.2.0-beta02

19. Juli 2019

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

Fehlerkorrekturen

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

Version 2.2.0-beta01

17. Juli 2019

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

Neue Funktionen

  • androidx.work:work-gcm:2.2.0-beta01 ist ein neues Maven-Artefakt, das die Verwendung von GCMNetworkManager als Scheduler unterstützt, wenn Google Play-Dienste für API-Ebenen <= 22 verfügbar sind. Dies ist eine optionale Abhängigkeit, die zu einer zuverlässigeren und leistungsstärkeren Hintergrundverarbeitung bei älteren API-Versionen beiträgt. Wenn Ihre App Google Play-Dienste verwendet, fügen Sie Ihrer Gradle-Datei diese Abhängigkeit hinzu, um automatisch GCMNetworkManager-Unterstützung zu erhalten. Wenn die Play-Dienste nicht verfügbar sind, greift WorkManager auf älteren Geräten weiterhin auf AlarmManager zurück.

Fehlerkorrekturen

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

Version 2.1.0

Version 2.1.0

11. Juli 2019

androidx.work:work-*:2.1.0 wird veröffentlicht. Dieser Release ist mit androidx.work:work-*:2.1.0-rc01 identisch.

Wichtige Änderungen seit Version 2.0.1

  • Für work-runtime-ktx ist jetzt Java 8 erforderlich. Wenn Probleme auftreten, können Sie Ihrem build.gradle Folgendes hinzufügen: kotlinOptions { jvmTarget = "1.8" }
  • Es wurde eine On-Demand-Initialisierung für WorkManager hinzugefügt, bei der WorkManager nur bei einer Referenz erstellt wird. b/127497100 So richten Sie Ihr Projekt für die On-Demand-Initialisierung ein:
    1. Deaktivieren Sie die automatische Initialisierung.
    2. Implementieren Sie Configuration.Provider in Ihrem benutzerdefinierten Application-Objekt.
    3. Ändern Sie alle Verweise auf WorkManager.getInstance() in WorkManager.getInstance(Context). Im Rahmen dieser Änderung wurde WorkManager.getInstance() eingestellt. Es ist immer sicherer, den neuen WorkManager.getInstance(Context)-Ersatz aufzurufen, auch wenn Sie die Initialisierung nicht bei Bedarf ausführen.
  • PeriodicWorkRequests unterstützen jetzt anfängliche Verzögerungen. Mit der Methode setInitialDelay von PeriodicWorkRequest.Builder können Sie eine anfängliche Verzögerung festlegen. b/111404867
  • Es ist jetzt möglich, mit DelegatingWorkerFactory eine oder mehrere registrierte WorkerFactory zu delegieren. b/131435993
  • Es ist jetzt möglich, die Executor zu personalisieren, die von WorkManager für die gesamte interne Buchhaltung über Configuration.Builder.setTaskExecutor verwendet wird.
  • Es ist jetzt möglich, Worker- und ListenableWorker-Klassen zu erstellen, die sich mithilfe von TestWorkerBuilder und TestListenableWorkerBuilder im work-testing-Artefakt für Unit-Tests verwenden lassen.
    • Hinweis: work-testing ruft jetzt Kotlin als Abhängigkeit ab und enthält standardmäßig mehrere Kotlin-Erweiterungen.
  • Die Anzahl der Ausführungsversuche wurde WorkInfo hinzugefügt. b/127290461
  • Mit Data-Typen können jetzt Bytes und Byte-Arrays gespeichert und abgerufen werden. Die maximale Größe von Data-Objekten ändert sich dadurch NICHT.
  • WorkManager hängt jetzt von Room 2.1.0 ab, wodurch einige Datenbankprobleme behoben werden sollten.

Version 2.1.0-rc01

27. Juni 2019

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

Fehlerkorrekturen

  • Ein Fehler wurde behoben, der dazu führte, dass eine Anwendung abstürzte, wenn Jobs mit JobScheduler ausgeführt wurden, während eine Sicherung in Bearbeitung war b/135858602.

Version 2.1.0-beta02

20. Juni 2019

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

Fehlerkorrekturen

  • TestListenableWorkerBuilder verwendet jetzt den richtigen WorkerFactory beim Erstellen von Instanzen von ListenableWorker. b/135275844
  • Ein Fehler wurde behoben, der zu Abweichungen bei den Ausführungsfenstern für WorkRequests aufgrund von Prozessende führte. b/135272196

Version 2.1.0-beta01

13. Juni 2019

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

Fehlerkorrekturen

  • WorkManager hängt jetzt von Room 2.1.0 ab, wodurch einige Datenbankprobleme behoben werden sollten.
  • Einige Laufwerk-E/A-Vorgänge beim Starten im Hauptthread wurden entfernt.
  • Behebung einer potenziellen Blockade beim Tracking von Einschränkungen. b/134361006
  • Ungültige Jobs, die WorkManager zugeordnet waren, wurden vorzeitig abgebrochen. b/134058261
  • Es wurden einige defensive Aufrufe an JobScheduler APIs für Geräte mit Fehlverhalten hinzugefügt.

Version 2.1.0-alpha03

5. Juni 2019

androidx.work:*:2.1.0-alpha03 wird veröffentlicht.

Fehlerkorrekturen

  • Verbesserte Dokumentation für PeriodicWorkRequests.
  • WorkManagerTestInitHelper verwendet jetzt den richtigen Hintergrundausführer für Tests.
  • Behebung von SQLite-Problemen beim Umgang mit großen Transaktionen auf einigen Geräten (b/130182503)
  • Die Abhängigkeiten von WorkManager sind jetzt detaillierter. (b/133169148).
  • Umgehung von OEM-spezifischen Fehlern bei der Implementierung von JobScheduler beim Planen von Jobs mit WorkManager.
  • Verbesserungen am AlarmManager-basierten Scheduler für Dienstlebensdauern, die zuvor selten zu Abstürzen geführt haben. (b/133313734)

Version 2.1.0-alpha02

16. Mai 2019

WorkManager 2.1.0-alpha02 ist verfügbar. Diese Version enthält mehrere neue APIs.

API-Änderungen

  • PeriodicWorkRequests unterstützen jetzt anfängliche Verzögerungen. Mit der Methode setInitialDelay von PeriodicWorkRequest.Builder können Sie eine anfängliche Verzögerung festlegen. b/111404867

  • Es ist jetzt möglich, mit DelegatingWorkerFactory eine oder mehrere registrierte WorkerFactory zu delegieren. b/131435993

  • Es ist jetzt möglich, die Executor zu personalisieren, die von WorkManager für die gesamte interne Buchhaltung über Configuration.Builder.setTaskExecutor verwendet wird.

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

Version 2.1.0-alpha01

24. April 2019

WorkManager 2.1.0-alpha01 ist veröffentlicht. Diese Version enthält mehrere neue APIs. Ab dieser Version gibt es neue Funktionen, die nicht in die 1.x-Version zurückportiert werden. Wir empfehlen, auf 2.x umzustellen.

API-Änderungen

  • On-Demand-Initialisierung für WorkManager hinzugefügt, die WorkManager nur bei Verweis erstellt. b/127497100 So richten Sie Ihr Projekt für die On-Demand-Initialisierung ein:
    1. Deaktivieren Sie die automatische Initialisierung.
    2. Implementieren Sie Configuration.Provider in Ihrem benutzerdefinierten Application-Objekt.
    3. Ändern Sie alle Verweise auf WorkManager.getInstance() in WorkManager.getInstance(Context). Im Rahmen dieser Änderung wurde WorkManager.getInstance() eingestellt. Es ist immer sicherer, den neuen WorkManager.getInstance(Context)-Ersatz aufzurufen, auch wenn Sie die Initialisierung nicht bei Bedarf ausführen.
  • Es ist jetzt möglich, Worker- und ListenableWorker-Klassen zu erstellen, die sich mithilfe von TestWorkerBuilder und TestListenableWorkerBuilder im work-testing-Artefakt für Unit-Tests verwenden lassen.
    • work-testing ruft jetzt Kotlin als Abhängigkeit ab, enthält aber standardmäßig auch mehrere Kotlin-Erweiterungen.
  • Die Anzahl der Ausführungsversuche wurde WorkInfo hinzugefügt. b/127290461
  • Mit Data-Typen können jetzt Bytes und Byte-Arrays gespeichert und abgerufen werden. Die maximale Größe von Data-Objekten ändert sich dadurch NICHT.
  • CoroutineWorker.coroutineContext wurde eingestellt. Dieses Feld wurde fälschlicherweise als CoroutineDispatcher eingegeben. Sie sollten es nicht mehr benötigen, da Sie im Body der suspendierenden Funktion selbst zum gewünschten coroutineContext wechseln können.
  • RxWorker.createWork() 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 ist verfügbar. Dieser Release ist mit 2.0.1-rc01 identisch.

Version 2.0.1-rc01

3. April 2019

WorkManager 2.0.1-rc01 ist veröffentlicht. Diese Version enthält einige Fehlerkorrekturen. Für Nutzer der alten Version 1.x sind einige dieser Änderungen auch in 1.0.1-rc01 zu sehen.

Fehlerkorrekturen

  • Robolectric-Tests funktionieren jetzt richtig mit WorkManager. b/122553577
  • Ein Absturz bei Grenzfällen wurde behoben, bei dem die Einschränkungen bei APIs vor JobScheduler nicht beseitigt wurden. b/129226383
  • Ein StackOverflowError-Problem bei langen Arbeitsabfolgen wurde behoben. b/129091233
  • Die Dokumentation für PeriodicWorkRequests wurde aktualisiert, um anzugeben, dass flexible Arbeitszeiten in API 23 nicht unterstützt werden.
  • Einige fehlerhafte Links in der Kotlin-Dokumentation wurden korrigiert.

Version 2.0.0

Version 2.0.0

20. März 2019

WorkManager 2.0.0 ist verfügbar. Diese Version ist mit 2.0.0-rc01 identisch und ist die AndroidX-Version von 1.0.0 Stable mit AndroidX-Abhängigkeiten. Wir empfehlen, Ihre Anzeigen auf diese Version auszurichten und nicht auf die älteren 1.x-Versionen. Die gesamte aktive Entwicklung wird auf 2.x ausgerichtet und 1.x erhält nur für begrenzte Zeit kritische Fehlerkorrekturen.

Version 2.0.0-rc01

7. März 2019

WorkManager 2.0.0-rc01 ist veröffentlicht. Diese Version ist mit der stabilen Version 1.0.0 identisch, hat aber AndroidX-Abhängigkeiten. Sobald die Version 2.0.0 stabil ist, sollten Sie diese Version verwenden. Die älteren Versionen 1.x erhalten nur einige kritische Fehlerkorrekturen. Alle aktiven Entwicklungen sind auf 2.x ausgerichtet.

Abhängigkeiten vor AndroidX

Informationen zur Verwendung von Kotlin-Erweiterungen finden Sie in der KTX-Dokumentation.
Referenzdokumente: Java
dependencies {
    def work_version = "1.0.1"

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

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

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

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

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

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

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

Version 1.0.1

Version 1.0.1

9. April 2019

WorkManager 1.0.1 wird veröffentlicht. Dieser Release ist mit 1.0.1-rc01 identisch.

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

Version 1.0.1-rc01

2. April 2019

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

Fehlerkorrekturen

  • Robolectric-Tests funktionieren jetzt richtig mit WorkManager. b/122553577
  • Ein Absturz bei Grenzfällen wurde behoben, bei dem die Einschränkungen bei APIs vor JobScheduler nicht beseitigt wurden. b/129226383
  • Ein StackOverflowError-Problem bei langen Arbeitsabfolgen wurde behoben. b/129091233

Version 1.0.0

Version 1.0.0

5. März 2019

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

Version 1.0.0-rc02

21. Februar 2019

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

Fehlerkorrekturen

  • Workers werden jetzt nach einem Absturz der Anwendung korrekt geplant. b/124546316

  • Workers, die eine nicht angeklickte Exception zurückgeben, werden jetzt korrekt als FAILED gekennzeichnet und führen nicht mehr zum Absturz des App-Prozesses.

Version 1.0.0-rc01

14. Februar 2019

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

Fehlerkorrekturen

  • Die AlarmManager-basierte Implementierung berücksichtigt jetzt korrekt flex-Zeitfenster für PeriodicWorkRequests. b/124274584

Version 1.0.0-beta05

6. Februar 2019

Diese Version enthält einige Fehlerkorrekturen.

Fehlerkorrekturen

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

Version 1.0.0-beta04

4. Februar 2019

Diese Version enthält einige Fehlerkorrekturen.

Fehlerkorrekturen

  • Verbesserte Planung von „PeriodicWork“ für die AlarmManager-basierte Implementierung.
  • Ein Fall wurde behoben, bei dem WorkManager bei Verwendung der AlarmManager-basierten Implementierung Einschränkungen nicht richtig erfasst hat. b/123379508
  • Es wurde ein Fall behoben, in dem WorkManager bei Verwendung der AlarmManager-basierten Implementierung den Vorgang nach dem Absterben des Prozesses nicht noch einmal ausgeführt hat. b/123329850
  • Ein Fall wurde behoben, bei dem WorkManager bei Verwendung der AlarmManager-basierten Implementierung Wakelocks leckte.

Version 1.0.0-beta03

25. Januar 2019

Diese Version enthält einige Fehlerkorrekturen.

Fehlerkorrekturen

  • Wir haben eine Regression 1.0.0-beta02 eingeführt, die dazu führte, dass Aufgaben in einigen Fällen nicht richtig ausgeführt wurden. b/123211993
  • Ein Fall wurde behoben, bei dem das Backoff-Timing bei einer Aufgabe nicht richtig berücksichtigt wurde. b/122881597
  • Ein ConcurrentModificationException wurde auf Geräten mit Android 5.1 (API 22) oder niedriger behoben. Dies ist eine Fortsetzung der Korrektur in 1.0.0-beta02. b/121345393
  • Wir haben exported=false für einige Komponenten in unserem Manifest hinzugefügt, für die diese Anmerkung fehlte.
  • Informationen dazu, wie WorkManager mit dem Betriebssystem interagiert, wurden in die Dokumentation auf Paketebene aufgenommen.

Version 1.0.0-beta02

15. Januar 2019

Diese Version enthält einige Fehlerkorrekturen.

Fehlerkorrekturen

  • Es wurde ein Grenzfall behoben, bei dem auf Geräten mit Android 6.0 (API-Level 23) periodische Aufgaben mehrmals pro Intervall ausgeführt werden konnten. b/121998363
  • Ein ConcurrentModificationException auf Geräten mit Android 5.1 (API-Level 22) oder niedriger wurde behoben. b/121345393
  • Fehlerhafte Ausführung von Aufgaben bei nicht erfüllten Einschränkungen auf Geräten mit Android 5.1 (API-Level 22) oder niedriger behoben. b/122578012
  • Die Verarbeitung der Aufgabenerledigung wurde optimiert, um in einigen Grenzfällen schneller zu sein. b/122358129
  • Es wurde eine Änderung hinzugefügt, um potenzielle Race-Bedingungen zwischen mehreren Instanzen von LiveData zu beheben, die von WorkManager verwendet werden.
  • Die Room-Abhängigkeit 1.1.1 wird jetzt anstelle von 1.1.1-rc01 verwendet. Diese Versionen sind identisch. b/122578011

Version 1.0.0-beta01

19. Dezember 2018

Diese Version enthält keine API-Änderungen. In Zukunft wird die WorkManager API voraussichtlich bis zur nächsten Version stabil bleiben, sofern kein kritisches Problem auftritt. Diese Version enthält einige Fehlerkorrekturen.

Fehlerkorrekturen

  • Bisher abgebrochene untergeordnete Elemente von abgeschlossenen übergeordneten Elementen werden nicht mehr ausgeführt. b/120811767
  • Korrekt initialisierte Logging-Klassen (wird hauptsächlich bei Tests festgestellt)

Version 1.0.0-alpha13

12. Dezember 2018

Dieser Release enthält eine geringfügige API-Änderung, die für einige Kotlin-Nutzer hilfreich sein wird.

API-Änderungen

  • androidx.work.Result wurde zu einer inneren Klasse von ListenableWorker verschoben. Dadurch werden Konflikte beim Refactoring mit der Result-Klasse der obersten Ebene in Kotlin verhindert. Das ist eine API-Änderung, die die Abwärtskompatibilität aufhebt. b/120564418

Bruchstellenfreie API-Änderungen

  • androidx.work.Result wurde zu einer inneren Klasse von ListenableWorker verschoben.

Version 1.0.0-alpha12

5. Dezember 2018

Diese Version enthält einige funktionsgefährdenden API-Änderungen. Weitere Informationen finden Sie unten im Abschnitt Funktionsgefährdenden API-Änderungen. Diese Version wird wahrscheinlich als erste Betaversion veröffentlicht. alpha12 enthält außerdem umfangreiche Aktualisierungen der Dokumentation.

API-Änderungen

  • Mit dem neuen Artefakt work-rxjava2 wird RxWorker eingeführt. Dies ist ein ListenableWorker, für das ein Single<Payload> erwartet wird.
  • Der Support für Firebase JobDispatcher wurde entfernt, da die Funktion bald eingestellt wird. Das bedeutet, dass das work-firebase-Artefakt in der Betaphase nicht mehr aktualisiert wird. Wir werden in Zukunft eine Alternative hinzufügen.
  • Payload mit Result zusammengeführt 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() abrufen können. Ihre ListenableFuture ergeben jetzt Result statt Payload. Workers haben keine Getter- und Setter-Methoden für die Ausgabe Data. Dies ist eine funktionsgefährdende Änderung.
  • Constraints.Builder.setTriggerContentMaxDelay(long, TimeUnit) und Constraints.Builder.setTriggerContentUpdateDelay(long, TimeUnit) sowie Varianten wurden hinzugefügt, um langsam ausgelöste Content-URIs besser zu unterstützen. b/119919774
  • Variante WorkRequest.Builder.setBackoffCriteria(BackoffPolicy, Duration) hinzugefügt. Für diese Methode ist API 26 erforderlich.
  • Kotlin-Erweiterungsmethoden Operation.await() und ListenableFuture.await() hinzugefügt.
  • Operation.getException() wurde in Operation.getThrowable() umbenannt. Dies ist eine funktionsgefährdende Änderung.
  • Die Klasse ContentUriTriggers und die Methoden, die darauf verweisen, sind nicht mehr öffentlich verfügbar. Dies ist eine funktionsgefährdende Änderung.
  • Die restlichen Methoden mit variabler Argumentanzahl in WorkManager, WorkContinuation und OneTimeWorkRequest wurden entfernt, um die API zu optimieren. Um Build-Probleme zu beheben, können Sie Ihre vorhandenen Variablenargumente in Arrays.asList(...) einschließen. Die Versionen mit einem Argument sind aber weiterhin verfügbar. Dies ist eine funktionsgefährdende Änderung.
  • WorkContinuation.combine(OneTimeWorkRequest, *) Varianten wurden entfernt. Die API war verwirrend. Die vorhandenen combine-Methoden sind verständlicher. Dies ist eine funktionsgefährdende Änderung.

Fehlerkorrekturen

  • Implementierungen vor Marshmallow können jetzt zuverlässiger nach dem Absturz eines Prozesses einer bereits ausgeführten Aufgabe wiederhergestellt werden.
  • LiveData, die über observeForever erfasst wird, wird über WorkManager erfasst. Dies ist ein Backport einer Korrektur für die Room-Bibliothek. b/74477406
  • Data.Builder.build() löst jetzt eine Ausnahme aus, wenn das serialisierte Objekt die maximale Größe überschreitet. Bisher trat dies nur in einem Hintergrund-Thread auf, wo es nicht richtig verarbeitet werden konnte.
  • Es wird weiter zwischen beendeten und abgebrochenen Aufgaben unterschieden. getWorkInfoById() gibt während ListenableWorker.onStopped() eine WorkInfo mit dem CANCELLED State zurück.
  • null Results in ListenableWorker als Fehler behandeln b/120362353
  • Spekulative Fehlerbehebung für Shield-Tablets mit API 24, bei denen manchmal eine IllegalArgumentException zurückgegeben wurde. b/119484416

Bruchstellenfreie API-Änderungen

  • Der Support für Firebase JobDispatcher wurde entfernt, da die Funktion bald eingestellt wird. Das bedeutet, dass das work-firebase-Artefakt in der Betaphase nicht mehr aktualisiert wird. Wir werden in Zukunft eine Alternative hinzufügen.
  • Payload mit Result zusammengeführt 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() abrufen können. Ihre ListenableFuture ergeben jetzt Result statt Payload. Workers haben keine Getter- und Setter-Methoden für die Ausgabe Data.
  • Kotlin-Erweiterungsmethoden Operation.await() und ListenableFuture.await() 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 Methoden mit variabler Argumentanzahl in WorkManager, WorkContinuation und OneTimeWorkRequest wurden entfernt, um die API zu optimieren. Um Build-Probleme zu beheben, können Sie Ihre vorhandenen Variablenargumente in Arrays.asList(...) einschließen. Die Versionen mit einem Argument sind aber weiterhin verfügbar.
  • WorkContinuation.combine(OneTimeWorkRequest, *) Varianten wurden entfernt. Die API war verwirrend. Die vorhandenen combine-Methoden sind verständlicher.

Version 1.0.0-alpha11

8. November 2018

Diese Version enthält viele Änderungen, die am beta in die stabile API übernommen werden. Diese Version enthält funktionsgefährdende API-Änderungen. Weitere Informationen finden Sie unten im Abschnitt Funktionsgefährdende API-Änderungen.

API-Änderungen

  • work-runtime-ktx führt eine neue CoroutineWorker ein.
  • WorkStatus wurde in WorkInfo umbenannt. Alle entsprechenden getStatus-Methodenvarianten wurden in die entsprechenden getWorkInfo-Varianten umbenannt. Dies ist eine funktionsgefährdende Änderung.
  • ListenableWorker.onStopped() akzeptiert kein boolesche Argument mehr, das angibt, ob die WorkRequest storniert wurde. Bei WorkManager wird diese Unterscheidung nicht mehr gemacht. Dies ist eine funktionsgefährdende Änderung.
  • Das androidx.work.test-Paket wurde in androidx.work.testing umbenannt. Dies ist eine funktionsgefährdende Änderung.
  • Setter für Constraints sind nicht mehr Teil der öffentlichen API. Dies ist eine funktionsgefährdende Änderung.
  • WorkerParameters.getTriggeredContentUris() und WorkerParameters.getTriggeredContentAuthorities() sind zuvor zurückgegebene Arrays. Jetzt geben diese Methoden Sammlungen zurück. Dies ist eine funktionsgefährdende Änderung.
  • ListenableWorker.onStartWork() wird in ListenableWorker.startWork() umbenannt. Dies ist eine funktionsgefährdende Änderung.
  • Der Konstruktor für WorkStatus ist nicht mehr Teil der öffentlichen API. Dies ist eine funktionsgefährdende Änderung.
  • Configuration.getMaxJobSchedulerID() und Configuration.getMinJobSchedulerID() wurden in Configuration.getMinJobSchedulerId() und Configuration.getMaxJobSchedulerId() umbenannt. Dies ist eine funktionsgefährdende Änderung.
  • Der öffentlichen API wurden viele @NonNull-Hinweise hinzugefügt, um die Ergonomie der API zu verbessern.
  • Fügen Sie die WorkManager.enqueueUniqueWork() API hinzu, um eindeutige OneTimeWorkRequests in die Warteschlange zu stellen, ohne eine WorkContinuation erstellen zu müssen.
  • Alle Varianten der enqueue- und cancel-Methoden für WorkManager geben jetzt einen neuen Operation-Typ zurück. Dies ist eine funktionsgefährdende Änderung.
  • Bei allen Varianten von enqueue werden keine Varargs mehr für WorkRequests akzeptiert. Dies ist eine funktionsgefährdende Änderung. Verwenden Sie stattdessen Sammlungen. Mit Arrays.asList() können Sie vorhandenen Code ändern. So konnten wir die API-Oberfläche und die Anzahl der Methoden reduzieren.
  • Der Versuch, initialize WorkManager mehrmals pro Prozess auszuführen, führt jetzt zu einer IllegalStateException. Dies ist eine funktionsgefährdende Änderung.

Fehlerkorrekturen

  • Für WorkRequest.Builders im work-runtime-ktx-Artefakt werden jetzt ListenableWorkers verwendet. Korrekturen für b/117666259
  • Die nächste Ausführungszeit für PeriodicWork muss in der Zukunft liegen. Korrekturen für b/118204399
  • Entfernen Sie potenzielle Laufwerk-E/A-Vorgänge, wenn Sie WorkManager beim Starten der App verwenden. Korrekturen für b/117796731
  • Behebung einer Race-Bedingung in WorkConstraintsTracker. Behebung des Problems android-workmanager/issues/56

Bruchstellenfreie API-Änderungen

  • WorkStatus wurde in WorkInfo umbenannt. Alle entsprechenden getStatus-Methodenvarianten wurden in die entsprechenden getWorkInfo-Varianten umbenannt.
  • ListenableWorker.onStopped() akzeptiert kein boolesche Argument mehr, das angibt, ob die WorkRequest storniert wurde. Bei WorkManager wird diese Unterscheidung nicht mehr gemacht.
  • Das androidx.work.test-Paket wurde in androidx.work.testing umbenannt.
  • Setter für Constraints sind nicht mehr Teil der öffentlichen API.
  • WorkerParameters.getTriggeredContentUris() und WorkerParameters.getTriggeredContentAuthorities() sind zuvor zurückgegebene Arrays. Jetzt geben diese Methoden Sammlungen zurück.
  • ListenableWorker.onStartWork() wird in ListenableWorker.startWork() umbenannt.
  • Der Konstruktor für WorkStatus ist nicht mehr Teil der öffentlichen API.
  • Configuration.getMaxJobSchedulerID() und Configuration.getMinJobSchedulerID() wurden in Configuration.getMinJobSchedulerId() und Configuration.getMaxJobSchedulerId() umbenannt.
  • Alle Varianten der Methoden enqueue und cancel für WorkManager geben jetzt einen neuen Operation-Typ zurück.
  • Bei allen Varianten von enqueue werden keine Varargs mehr für WorkRequests akzeptiert.
  • Der Versuch, initialize WorkManager mehrmals pro Prozess auszuführen, führt jetzt zu einer IllegalStateException.

Version 1.0.0-alpha10

11. Oktober 2018

Diese Version unterstützt vom Entwickler gesteuerte asynchrone Arbeit. Diese Version enthält funktionsgefährdende API-Änderungen. Weitere Informationen finden Sie unten im Abschnitt Funktionsgefährdende API-Änderungen.

Wir gehen davon aus, dass sich WorkManager in den letzten Phasen der Alphaphase befindet. Wir gehen davon aus, dass die API in der Betaphase stabil ist. Bitte nehmen Sie sich Zeit, um Ihr Feedback in unserem Issue Tracker einzureichen.

API-Änderungen

  • Alle bisher vorhandenen deprecated-Methoden und ‑Klassen wurden entfernt, insbesondere der Standardkonstruktor für Worker. Dies ist eine funktionsgefährdende API-Änderung.
  • NonBlockingWorker wurde in ListenableWorker umbenannt. Diese öffentliche Klasse ist jetzt sichtbar und kann verwendet werden.
    • ListenableWorker bietet Zugriff auf eine abstrakte Methode, ListenableFuture<Payload> onStartWork(), die im Hauptthread aufgerufen wird. Sie können asynchrone Aufgaben starten und verarbeiten. Wenn du fertig bist, solltest du die ListenableFuture entsprechend aktualisieren. Referenzimplementierungen von ListenableFutures finden Sie im Futures-Paket in alpha02 (siehe Abschnitt WorkManager unten).
    • Worker erweitert ListenableWorker und funktioniert weiterhin wie zuvor mit einer abstrakten Result doWork()-Methode.
    • Einige Methoden und Mitglieder wurden von Worker nach ListenableWorker verschoben.
    • Wir stellen demnächst Referenzimplementierungen für ListenableWorkers bereit, die Kotlin-Coroutinen (sobald die stabilen Versionen veröffentlicht werden) und RxJava2 verwenden.
  • Die Schnittstelle WorkerFactory und die konkrete Implementierung DefaultWorkerFactory wurden in einer abstrakten Klasse namens WorkerFactory zusammengeführt. Durch die Implementierung wird sichergestellt, dass das standardmäßige reflexionsbasierte Verhalten als letzte Maßnahme für alle vom Nutzer erstellten WorkerFactory-Instanzen aufgerufen wird. Dies ist eine funktionsgefährdende Änderung.
  • WorkManager.synchronous() und WorkContinuation.synchronous() sowie alle zugehörigen Methoden wurden entfernt. ListenableFuture<Void> wurde als Rückgabetyp vieler Methoden in der API hinzugefügt. Dies ist eine funktionsgefährdende API-Änderung.
    • Mit ListenableFutures können Sie Daten jetzt synchron abrufen und beobachten. Beispiel: WorkManager.enqueue() gab früher void zurück, jetzt wird ListenableFuture<Void> zurückgegeben. Sie können ListenableFuture.addListener(Runnable, Executor) oder ListenableFuture.get() aufrufen, um Code auszuführen, sobald der Vorgang abgeschlossen ist.
    • Diese ListenableFuture geben nicht an, ob der Vorgang erfolgreich war oder fehlgeschlagen ist, sondern nur, dass er abgeschlossen wurde. Sie müssen weiterhin WorkManager-Methoden verketten, um diese Informationen zu erhalten.
    • cancel()-Aufrufe für diese Objekte werden ignoriert, da sie verwirrend und schwer nachvollziehbar sind (werden der Vorgang oder die resultierende Arbeit abgebrochen?). Das ist im Vertrag von Future vorgesehen.
    • Zur Wahrung der Parität mit den synchronen getStatus*-Methoden haben wir ListenableFuture-Varianten bereitgestellt und die vorhandenen Methoden, die LiveData zurückgegeben haben, so umbenannt, dass sie ausdrücklich „LiveData“ im Namen enthalten (z. B. getStatusesByIdLiveData(UUID)). Dies ist eine API-Änderung, die die Abwärtskompatibilität beeinträchtigt.

Fehlerkorrekturen

  • Das bekannte Problem aus Alpha 09 mit doppelten androidx-annotations.pro-Dateien wurde behoben. Sie können die Umgehung aus den vorherigen Release-Notes entfernen, indem 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
  • Potenzielles NullPointerException in einer Race-Bedingung behoben, bei der Arbeit REPLACE wurde. b/116253486 und b/116677275
  • Für WorkContinuation.combine() werden jetzt ein oder mehrere WorkContinuation statt zwei oder mehr akzeptiert. b/117266752

Bruchstellenfreie API-Änderungen

  • Alle bisher vorhandenen deprecated-Methoden und ‑Klassen wurden entfernt, insbesondere der Standardkonstruktor für Worker.
  • Die Schnittstelle WorkerFactory und die konkrete Implementierung DefaultWorkerFactory wurden in einer abstrakten Klasse namens WorkerFactory zusammengeführt.
  • WorkManager.synchronous() und WorkContinuation.synchronous() wurden entfernt.
  • WorkManager.getStatus*()-Methoden geben jetzt ListenableFuture zurück. WorkManager.getStatus*LiveData() gibt LiveData zurück.

Version 1.0.0-alpha09

19. September 2018

Bekanntes Problem

Wenn Sie das folgende Problem feststellen: „Mehrere Dateien mit dem systemunabhängigen Pfad ‚META-INF/proguard/androidx-annotations.pro‘ gefunden“, fügen Sie Folgendes in Ihre Gradle-Datei ein, um das Problem vorübergehend zu beheben, bis wir es in alpha10 behoben haben:

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

Fehlerkorrekturen

  • Weitere Fehlerkorrektur für den Fehler „100 Aufträge“ hinzugefügt. b/115560696
  • Einige Fehlerkorrekturen für Fehler bei Fremdschlüsseleinschränkungen aufgrund von Race-Zuständen hinzugefügt. b/114705286
  • Delegierte ConstraintTrackingWorker.onStopped(boolean)-Aufrufe an die zugrunde liegende Worker. b/114125093
  • Die korrekte minimale Backoff-Verzögerung für Firebase JobDispatcher erzwingen. b/113304626
  • Verbesserte Threads werden innerhalb der Bibliothek garantiert.
  • Potenzielles Problem mit der Deduplizierung von LiveData intern behoben.

API-Änderungen

  • Sie können jetzt eigene Worker-Instanzen zur Laufzeit erstellen, indem Sie eine WorkerFactory als Teil der WorkManager.Configuration angeben. Die Fallback-Fabrik ist DefaultWorkerFactory, was dem Verhalten in früheren Versionen von WorkManager entspricht.
    • Die Standardkonstruktoren für Worker und NonBlockingWorker sind jetzt als eingestellt gekennzeichnet. 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 verwenden das neue ListenableFuture-Artefakt intern (ohne Guava-Abhängigkeiten). In zukünftigen Releases werden ListenableFutures in die API eingeführt. Durch diese Änderung kann NonBlockingWorker später wieder eingeblendet werden.
  • Es ist jetzt möglich, zeitgesteuerte Aufgaben in TestDriver über TestDriver.setInitialDelayMet(UUID) und TestDriver.setPeriodDelayMet(UUID) auszulösen. b/113360060

Wichtige Änderungen

  • Die Standardkonstruktoren Worker und NonBlockingWorker sind veraltet. Bitte migrieren Sie so schnell wie möglich zum neuen Konstruktor. In zukünftigen Versionen wird der Standardkonstruktor entfernt.

Version 1.0.0-alpha08

27. August 2018

Fehlerkorrekturen

  • WorkManager-Komponenten, die explizit als nicht für den direkten Start geeignet gekennzeichnet sind, werden beim direkten Start nicht gestartet. In Zukunft werden wir eine Version von WorkManager anbieten, die direkt nach dem Starten des Geräts aktiv ist. b/112665532
  • Ein Problem wurde behoben, bei dem wiederholte Aufgaben nicht ausgeführt wurden. b/112604021
  • Behoben wurde ein Problem, bei dem sich wiederkehrende Aufgaben nicht wiederholt ausführen ließen (im Zusammenhang mit dem oben genannten Problem). b/112859683
  • Es werden Backoff-Richtlinien berücksichtigt, wenn der App-Prozess bereits ausgeführt wird.
  • Die Ausnahmemeldungen in Data wurden korrigiert, um anzugeben, dass das Limit 10 KB beträgt.
  • Der maximale Wert von Configuration.setMaxSchedulerLimit(int) wurde auf 50 gesenkt, um Verzögerungen bei der JobScheduler-Verarbeitung zu berücksichtigen. b/112817355

Version 1.0.0-alpha07

16. August 2018

Fehlerkorrekturen

  • Behoben wurde ein Problem mit einer potenziellen SQL-Abfrage mit negativen Grenzwerten, die eine unbegrenzte Anzahl von Ergebnissen zurückgeben konnte.
  • Wenn die Ausführung einer Aufgabe abgeschlossen ist, werden jetzt alle ausstehenden Kopien dieser Aufgabe in anderen Schedulern korrekt abgebrochen. Dadurch wurde das Limit von JobScheduler Jobs überschritten. b/111569265
  • Ein ConcurrentModificationException in ConstraintTracker wurde behoben. b/112272753
  • Die Anmerkungen zum Rückgabetyp von Data.getBooleanArray(String) und Data.getIntArray(String) wurden von @NonNull in @Nullable geändert. b/112275229

API-Änderungen

  • Worker erweitert jetzt eine neue Klasse, NonBlockingWorker. Dies hat keine Auswirkungen auf die aktuelle Nutzung. Künftig wird NonBlockingWorker vollständig für benutzerdefinierte Lösungen für Threads unterstützt.
  • Die Anmerkungen zum Rückgabetyp von Data.getBooleanArray(String) und Data.getIntArray(String) wurden von @NonNull in @Nullable geändert. b/112275229
  • Kotlin-Erweiterungen: Map.toWorkData() wurde eingestellt und workDataOf(vararg Pair<String, Any?>) auf oberster Ebene hinzugefügt, um für mehr Einheitlichkeit mit vorhandenen APIs zu sorgen.

Version 1.0.0-alpha06

1. August 2018

Fehlerkorrekturen

  • Verhindern einer Datenbanksperre beim Planen von Aufgaben. b/111801342
  • Ein Fehler wurde behoben, durch den PeriodicWork im Ruhemodus nicht wie geplant ausgeführt wurde. b/111469837
  • Behebung einer Race-Condition beim Tracking von Einschränkungen, die zum Absturz von WorkManager führt. googlecodelabs/android-workmanager/issues/56
  • Erstellen Sie eindeutige WorkRequest, wenn Sie WorkRequest.Builder#build() verwenden. b/111408337
  • Aktivieren Sie die Verwendung von RescheduleReceiver nur, wenn WorkRequests dies erfordern. b/111765853

Version 1.0.0-alpha05

24. Juli 2018

API-Änderungen

  • WorkManager.getInstance() ist jetzt mit @NonNull statt @Nullable gekennzeichnet. Wenn das Singleton bei der manuellen Initialisierung nicht ordnungsgemäß initialisiert wird, wirft die Methode stattdessen eine IllegalStateException aus. Dies ist eine API-Änderung, die die Abwärtskompatibilität beeinträchtigt.
  • Die neue API Configuration.Builder.setMinimumLoggingLevel(int) wurde hinzugefügt, mit der die Detaillierung von WorkManager gesteuert werden kann. Standardmäßig werden von WorkManager Log.INFO und höher protokolliert.
  • Die Signatur von Data.getString() wurde geändert, sodass kein Standardwert mehr verwendet wird (es ist implizit null). Dies ist eine nicht abwärtskompatible API-Änderung.
  • Einige Methoden, die nur für die interne Verwendung erforderlich sind, wurden mit @hide gekennzeichnet. Dazu gehören der Konstruktor von Constraints, Data.toByteArray() und Data.fromByteArray(byte[]). Dies ist eine funktionsgefährdende API-Änderung.

Fehlerkorrekturen

  • WorkManager führt keine Aufgaben mehr aus, wenn bekannte Fälle der automatischen Sicherung auftreten. Dies könnte zu einem Absturz geführt haben. b/110564377
  • Das doppelte Planen von PeriodicWorkRequests bei Verwendung von JobScheduler wurde behoben. b/110798652
  • Ein Problem wurde behoben, durch das PeriodicWorkRequests nach dem Ruhemodus des Geräts nicht richtig ausgeführt wurden. b/111469837
  • Ein Problem mit anfänglichen Verzögerungen bei der Verwendung von Firebase JobDispatcher wurde behoben. b/111141023
  • Einige potenzielle Race-Bedingungen und Zeitprobleme wurden behoben.
  • Nicht mehr benötigte BroadcastReceivers wurden korrekt freigegeben.
  • Die Leistung der Neuplanung wurde optimiert, wenn Apps nach dem Erzwingen des Schließens neu gestartet werden.
  • Es ist zulässig, TestScheduler.setAllConstraintsMet(UUID) vor oder nach dem Einfügen der angegebenen WorkRequest aufzurufen. b/111238024

Wichtige Änderungen

  • WorkManager.getInstance() ist jetzt mit @NonNull statt @Nullable gekennzeichnet.
  • Die Signatur von Data.getString() wurde geändert, sodass sie keinen Standardwert mehr annimmt (implizit null).
  • Einige Methoden, die nur für die interne Verwendung erforderlich sind, wurden mit @hide gekennzeichnet. Dazu gehören der Konstruktor von Constraints, Data.toByteArray() und Data.fromByteArray(byte[]).

Version 1.0.0-alpha04

26. Juni 2018

Fehlerkorrekturen

  • PeriodicWorkRequests werden jetzt bei Verwendung der AlarmManager-basierten Implementierung korrekt neu geplant.
  • Ein potenzieller ANR wurde behoben, der beim Neuplanen aller Worker nach einem erzwungenen Beenden oder Neustart auftrat. b/110507716
  • Den verschiedenen WorkManager APIs wurden Anmerkungen zur Null-Zulässigkeit hinzugefügt. b/110344065
  • Nicht abgefangene Ausnahmen, die während der Ausführung des Workers auftreten, werden protokolliert. b/109900862
  • Zerstörende Datenbankmigrationen sind jetzt zulässig, wenn Sie zu einer älteren Version von WorkManager zurückkehren möchten. b/74633270
  • Ein Absturz bei der Migration, der beim Erstellen doppelter impliziter Tags auftrat, wurde behoben. Dieses Problem tritt sehr selten auf und nur, wenn Sie dasselbe implizite Tag-Format verwendet haben.

Version 1.0.0-alpha03

19. Juni 2018

Fehlerkorrekturen

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

  • Duplikate Jobs bei der Verwendung von JobScheduler nach einem Geräteneustart behoben

  • Jobs mit Content-URI-Triggern bleiben jetzt nach einem Neustart erhalten. b/80234744

  • Aktualisierte Dokumentation: b/109827628, b/109758949, b/80230748

  • Ein Absturz beim erneuten Einfügen einer WorkRequest in die Warteschlange wurde behoben. b/109572353.

  • Kotlin-Compilerwarnungen bei Verwendung der work-runtime-ktx-Abhängigkeit wurden behoben.

  • Für WorkManager wird jetzt Room Version 1.1.1-rc1 verwendet.

API-Änderungen

  • getStatusesSync(), die synchrone Version von WorkContinuation.getStatuses(), wurde hinzugefügt.
  • Worker kann zwischen einer vom Nutzer initiierten Stornierung und einer vorübergehenden vom Betriebssystem angeforderten Beendigung unterscheiden. Worker.isStopped() gibt true zurück, wenn eine Art von Unterbrechung angefordert wurde. Worker.isCancelled() gibt true zurück, wenn die Arbeit explizit abgebrochen wurde. b/79632247
  • Unterstützung für JobParameters#getNetwork() unter API 28 hinzugefügt. Dieser wird über Worker.getNetwork() freigegeben.
  • Configuration.Builder.setMaxSchedulerLimit(int maxSchedulerLimit) wurde hinzugefügt, damit Sie festlegen können, wie viele Jobs 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 für WorkManager sicher sind. b/79996760
  • Worker.getRunAttemptCount() gibt die aktuelle Ausführungsanzahl für eine bestimmte Worker zurück. b/79716516
  • Mit WorkManager.enqueueUniquePeriodicWork(String uniqueWorkName, ExistingPeriodicWorkPolicy existingPeriodicWorkPolicy, PeriodicWorkRequest periodicWork) kannst du eindeutige PeriodicWorkRequests in die Warteschlange stellen. b/79600647
  • WorkManager.cancelAllWork() kündigt alle Workers. Bibliotheken, die von WorkManager abhängen, 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

Verhaltensänderungen

  • Ein implizites Tag für alle WorkRequests hinzugefügt, also der voll qualifizierte Klassenname für die Worker. So können WorkRequests ohne tags oder wenn die id nicht verfügbar ist, entfernt werden. b/109572351

Wichtige Änderungen

  • Worker.WorkerResult wurde in Worker.Result umbenannt.
  • Worker.onStopped hat jetzt einen zusätzlichen isCancelled-Parameter, der auf true gesetzt wird, wenn die Worker-Anfrage explizit abgebrochen wurde.

Version 1.0.0-alpha02

24. Mai 2018

Fehlerkorrekturen

  • Ein NullPointerException wurde am State.isFinished() behoben. b/79550068
  • Ein Problem wurde behoben, das dazu führte, dass Workers am Application.onCreate() neu geplant wurden. b/79660657
  • Ein Problem wurde behoben, bei dem mehr Arbeit geplant werden konnte, als vom Betriebssystem zulässig ist. b/79497378
  • Die Bereinigung von Wakelocks, die mit Workers verknüpft sind, wurde in den Hintergrund-Thread verschoben.
  • Bei der AlarmManager-Implementierung wird jetzt die Bereinigung korrekt durchgeführt, wenn alle ausstehenden Aufgaben abgeschlossen sind.
  • Bereinigungs-SQL-Abfragen für andere Sprachen als Englisch wurden korrigiert. b/80065360
  • Unterstützung für float in Data hinzugefügt b/79443878
  • Data.Builder.putAll() gibt jetzt eine Instanz der Builder zurück. b/79699162
  • Weitere Javadoc-Informationen und Korrekturen in der Dokumentation. b/79691663

API-Änderungen

  • Workers können auf das Anhalten reagieren. Mit Worker.isStopped() können Sie prüfen, ob eine Worker beendet wurde. Mit Worker.onStopped() können Sie einfache Bereinigungsvorgänge ausführen.
  • Die Worker.getTags() API gibt eine Set von Tags zurück, die mit der Worker verknüpft sind.
  • Es wurden javax.time.Duration-Überladungen für APIs hinzugefügt, die eine Kombination aus Dauer und TimeUnits annehmen. Dies wird von @RequiresApi(26) geschützt.
  • WorkManager Erweiterungen wurden aus dem androidx.work.ktx-Paket in das androidx.work-Paket verschoben. Die alten Erweiterungen werden eingestellt und in einer zukünftigen Version entfernt.
  • Configuration.withExecutor() wurde eingestellt. Verwenden Sie stattdessen Configuration.setExecutor().

Version 1.0.0-alpha01

8. Mai 2018

WorkManager vereinfacht die Planung und Ausführung von garantierten, einschränkungsbewussten Hintergrundaufgaben. Diese erste Version ist 1.0.0-alpha01.