WorkManager
| Dernière mise à jour | Version stable | Version finale | Version bêta | Version alpha | 
|---|---|---|---|---|
| 22 octobre 2025 | 2.11.0 | - | - | - | 
Déclarer des dépendances
Pour ajouter une dépendance à WorkManager, vous devez ajouter le dépôt Maven Google à votre projet.
Ajoutez les dépendances des artefacts dont vous avez besoin dans le fichier build.gradle de votre application ou module :
Groovy
dependencies { def work_version = "2.11.0" // (Java only) implementation "androidx.work:work-runtime:$work_version" // Kotlin + coroutines implementation "androidx.work:work-runtime-ktx:$work_version" // optional - RxJava2 support implementation "androidx.work:work-rxjava2:$work_version" // optional - GCMNetworkManager support implementation "androidx.work:work-gcm:$work_version" // optional - Test helpers androidTestImplementation "androidx.work:work-testing:$work_version" // optional - Multiprocess support implementation "androidx.work:work-multiprocess:$work_version" }
Kotlin
dependencies { val work_version = "2.11.0" // (Java only) implementation("androidx.work:work-runtime:$work_version") // Kotlin + coroutines implementation("androidx.work:work-runtime-ktx:$work_version") // optional - RxJava2 support implementation("androidx.work:work-rxjava2:$work_version") // optional - GCMNetworkManager support implementation("androidx.work:work-gcm:$work_version") // optional - Test helpers androidTestImplementation("androidx.work:work-testing:$work_version") // optional - Multiprocess support implementation("androidx.work:work-multiprocess:$work_version") }
Pour en savoir plus sur l'utilisation des extensions Kotlin, consultez la documentation sur les extensions KTX.
Pour en savoir plus sur les dépendances, consultez la page Ajouter des dépendances de build.
Commentaires
Vos commentaires nous aident à améliorer Jetpack. N'hésitez pas à nous contacter si vous découvrez de nouveaux problèmes ou si vous avez des idées pour améliorer cette bibliothèque. Veuillez consulter les problèmes existants de cette bibliothèque avant d'en signaler un nouveau. Vous pouvez ajouter votre vote à un problème existant en cliquant sur le bouton en forme d'étoile.
Pour en savoir plus, consultez la documentation sur l'outil Issue Tracker.
Version 2.11
Version 2.11.0
22 octobre 2025
Publication d'androidx.work:work-*:2.11.0. La version 2.11.0 contient ces commits.
Changements importants depuis la version 2.10.0 :
- La minSdkest passée de l'API 21 à l'API 23.
- L'API setRemoteSessionTimeoutMillisdu générateur de configuration deWorkManagera été ajoutée pour permettre de configurer la durée de vie d'une sessionRemoteWorkManagerà partir de sa dernière utilisation.
Version 2.11.0-rc01
8 octobre 2025
Publication d'androidx.work:work-*:2.11.0-rc01. La version 2.11.0-rc01 contient ces commits.
Version 2.11.0-beta01
24 septembre 2025
Publication d'androidx.work:work-*:2.11.0-beta01. La version 2.11.0-beta01 contient ces commits.
Modifications apportées à l'API
- Ajoutez stopRunningWorkWithReasonàWorkManagerTestDriver. (Ie53b2, b/439955564)
Correction de bugs
- Correction de l'arrêt du service de premier plan lorsqu'il y a des commandes en attente (Iae822, b/432069314)
- Correction d'un problème qui empêchait le nœud de calcul de coroutine à distance de dissocier le service à distance (I842f2, b/247113322)
Version 2.11.0-alpha01
27 août 2025
Publication d'androidx.work:work-*:2.11.0-alpha01. La version 2.11.0-alpha01 contient ces commits.
Modifications apportées à l'API
- La valeur minSdk est passée de l'API 21 à l'API 23 (Ibdfca, b/380448311, b/435705964, b/435705223).
- L'API setRemoteSessionTimeoutMillisdu générateur de configuration de WorkManager a été ajoutée pour permettre de configurer la durée de vie d'une session RemoteWorkManager à partir de sa dernière utilisation. (Ib23c8)
- Ajout d'une API expérimentale dans WorkRequest.Builderpour appliquer un délai avant nouvelle tentative lorsque le système interrompt le travail. (Ie2dc7, b/335513480)
- Ajout d'une API de test permettant de transmettre une classe de worker différente à TestListenableWorkerBuilderque celle en cours de création pour prendre en charge les implémentationsWorkerFactorypersonnalisées. (If6bff, b/389154854)
Correction de bugs
- Mise en cache des capacités réseau dans SharedNetworkCallbackpour éviter les IPC inutiles (Ie4027, b/427115602)
- Correction d'un problème lié à l'évaluation des contraintes réseau, qui empêchait les éléments de travail suivants d'obtenir les capacités réseau actuelles et entraînait plutôt un ConstraintsNotMetaprès un délai d'expiration. (Ib6a66, b/427115602)
Version 2.10
Version 2.10.5
24 septembre 2025
Publication d'androidx.work:work-*:2.10.5. La version 2.10.5 contient ces commits.
Correction de bugs
- Correction de l'arrêt du service de premier plan lorsqu'il y a des commandes en attente (Iae822, b/432069314)
Version 2.10.4
10 septembre 2025
Publication d'androidx.work:work-*:2.10.4. La version 2.10.4 contient ces commits.
Correction de bugs
- Correction d'un problème lié à l'échec de la dissociation du service à distance par RemoteCoroutineWorker(I842f2, b/247113322)
Version 2.10.3
30 juillet 2025
Publication d'androidx.work:work-*:2.10.3. La version 2.10.3 contient ces commits.
Correction de bugs
- Correction d'un problème où les nœuds de calcul ayant les mêmes contraintes réseau qu'un nœud de calcul précédent signalaient que leurs contraintes n'étaient pas respectées. (b/427115602).
Version 2.10.2
18 juin 2025
Publication d'androidx.work:work-*:2.10.2. La version 2.10.2 contient ces commits.
Correction de bugs
- Correction d'un problème lors de la persistance des workers avec des requêtes réseau et des capacités par défaut qui entraîneraient la réajout des capacités supprimées, ce qui entraînerait un mauvais comportement des workers avec des contraintes réseau. (b/409716532)
- Correction d'un bug qui empêchait l'exécution rapide des nœuds de calcul avec des contraintes réseau en raison de contraintes non respectées, même si le réseau et les capacités étaient disponibles. (b/423403088)
Version 2.10.1
23 avril 2025
Publication d'androidx.work:work-*:2.10.1. La version 2.10.1 contient ces commits.
Correction de bugs
- Réduisez le risque que TooManyRequestsExceptionsoit généré à partir de l'enregistrement d'unNetworkCallbackutilisé pour le suivi des contraintes parWorkManager. (b/231499040, b309d5).
Version 2.10.0
30 octobre 2024
Publication d'androidx.work:work-*:2.10.0. La version 2.10.0 contient ces commits.
Modifications importantes depuis la version 2.9.1
- Ajout de tags de trace aux Jobs à partir de WorkManager, ce qui rend "adb shell dumpsys jobscheduler" beaucoup plus facile à comprendre, car il contiendra le nom du Worker en cours d'exécution. Des sections de trace sont également ajoutées autour des zones clés deWorkManager.
- Configuration.workerCoroutineContexta été ajouté pour contrôler le répartiteur où- CoroutineWorkerest exécuté.
- Les développeurs peuvent spécifier NetworkRequestcomme contrainte pour un nœud de calcul via la méthodeConstraints.setRequiredNetworkRequest. Cela permet un contrôle plus précis du réseau sur lequel ce worker doit s'exécuter.
- La version 2.10.0 de WorkManagerest désormais compilée avec le SDK 35 et contient diverses modifications pour la compatibilité avec le SDK 35.
Version 2.10.0-rc01
24 octobre 2024
Publication d'androidx.work:work-*:2.10.0-rc01. La version 2.10.0-rc01 contient ces commits.
Version 2.10.0-beta01
2 octobre 2024
Publication d'androidx.work:work-*:2.10.0-beta01. La version 2.10.0-beta01 contient ces commits.
Version 2.10.0-alpha04
18 septembre 2024
Publication d'androidx.work:work-*:2.10.0-alpha04. La version 2.10.0-alpha04 contient ces commits.
Modifications apportées à l'API
- Ajoutez le motif d'arrêt STOP_REASON_FOREGROUND_SERVICE_TIMEOUTlorsqu'un nœud de calcul de premier plan est arrêté en raison d'un délai d'exécution dépassé, en fonction du type de service de premier plan. (Ibd0af)
Version 2.10.0-alpha03
4 septembre 2024
Publication d'androidx.work:work-*:2.10.0-alpha03. La version 2.10.0-alpha03 contient ces commits.
Nouvelles fonctionnalités
- Ajout de tags de trace aux Jobs à partir de WorkManager, ce qui rend "adb shell dumpsys jobscheduler" beaucoup plus facile à comprendre, car il contiendra le nom du Worker en cours d'exécution. Des sections de trace sont également ajoutées autour des zones clés deWorkManager.
Modifications apportées à l'API
- WorkManager 2.10.0 est désormais compilé avec le SDK 35.
- Correction du délai d'expiration des workers de premier plan de type "service court" et "synchronisation des données", qui provoquait une ANR lorsque WorkManagern'appelait passtopSelf(). Ce correctif ne s'applique qu'aux appareils dotés des API 34 et 35, où les types de services de premier plan ont été introduits. (ca06b2, b/364508145)
- Nouvelles API WorkerParameterspermettant de changer le processus distant auquelWorkerse lie lors de l'utilisation d'unWorkerFactory. (Ibdc8a, Ie8a90, I7373f)
Correction de bugs
- Correction d'un plantage causé par WorkManagerqui tentait de redémarrer un nœud de calcul de longue durée (c'est-à-dire un nœud de calcul de premier plan) lorsque le type de premier plan du travail disposait d'autorisations requises pour Android 14 qui avaient été révoquées. (b/333957914)
- Suppression de la présentation manuelle de l'accès aux nouvelles API de plate-forme, car cela se fait automatiquement via la modélisation d'API lorsque vous utilisez R8 avec AGP 7.3 ou version ultérieure (par exemple, R8 version 3.3) et pour toutes les versions lorsque vous utilisez AGP 8.1 ou version ultérieure (par exemple, D8 version 8.1). Les clients qui n'utilisent pas AGP sont invités à passer à la version 8.1 ou ultérieure de D8. Consultez cet article pour en savoir plus. (Ia60e0, b/345472586)
Version 2.10.0-alpha02
17 avril 2024
Publication d'androidx.work:work-*:2.10.0-alpha02. La version 2.10.0-alpha02 contient ces commits.
Modifications apportées à l'API
- Ajout de la possibilité d'émettre des portées de trace via un Tracer@RestrictToconfigurable dansWorkManager. (I17d7f, b/260214125)
- Configuration.workerCoroutineContexta été ajouté pour contrôler le répartiteur où- CoroutineWorkerest exécuté. Cela permet d'éviter complètement l'utilisation de- Dispatchers.Defaultdans- WorkManager. (Icd1b7)
- Ajout de gestionnaires d'exceptions personnalisés pour les Workers (Ib1b74, b/261190695)
- OneTimeWorkRequest.Builderet- PeriodicWorkRequest.Builderpeuvent désormais être construits avec- KClassau lieu de- Class:- val request = OneTimeWorkRequest.Builder(Worker::class).setConstraints(...).build()(Ib55f6).
- La classe WorkManagera été migrée vers Kotlin. Les méthodes qui renvoientLiveData,ListenableFutureouFlowfournissent désormais des informations correctes sur la possibilité de valeur nulle. Cela peut nécessiter des modifications dans le code source des clients si les hypothèses de possibilité de valeur nulle dans ce code étaient incorrectes. (If6757)
Version 2.10.0-alpha01
24 janvier 2024
Publication d'androidx.work:work-*:2.10.0-alpha01. Liste des commits de la version 2.10.0-alpha01
Nouvelles fonctionnalités
- Les développeurs peuvent spécifier NetworkRequestcomme contrainte pour un nœud de calcul via la méthodeConstraints.setRequiredNetworkRequest. Cela permet un contrôle plus précis du réseau sur lequel ce worker doit s'exécuter.
Modifications apportées à l'API
- Ajout de la possibilité de spécifier NetworkRequestcomme contrainte. (Id98a1, b/280634452)
Version 2.9
Version 2.9.1
7 août 2024
Publication d'androidx.work:work-*:2.9.1. La version 2.9.1 contient ces commits.
Correction de bugs
- Correction d'un plantage causé par WorkManagerqui tentait de redémarrer un nœud de calcul de longue durée (c'est-à-dire un nœud de calcul de premier plan) lorsque le type de premier plan du nœud de calcul avait des autorisations requises pour Android 14 qui avaient été révoquées. (b/333957914)
Version 2.9.0
29 novembre 2023
Publication d'androidx.work:work-*:2.9.0. Liste des commits de la version 2.9.0
Changements importants depuis la version 2.8.0
- Observabilité via les Flow. Au lieu deLiveData, la progression du Worker peut désormais être observée via Flow avecWorkManager.getWorkInfosFlowet des méthodes similaires.
- WorkManagerfournit désormais une indication sur la raison pour laquelle un nœud de calcul a été arrêté précédemment. Il peut être interrogé à partir d'un worker lui-même via la méthode- getStopReason()ou à partir de- WorkInfovia- getStopReason().
- Planification précise des workers périodiques via setNextScheduleTimeOverride. Cela permet de calculer dynamiquement le prochain programme de travail périodique, qui peut être utilisé pour implémenter des fonctionnalités avancées telles que des temps d'actualisation adaptatifs, un comportement de nouvelle tentative personnalisé ou l'exécution d'un worker de flux d'actualités avant le réveil de l'utilisateur chaque matin sans décalage.ExistingPeriodicWorkPolicy.UPDATEdoit être utilisé avec ces techniques pour éviter d'annuler un worker en cours d'exécution lors de la planification du prochain.
- Tests de WorkManager avec des threads correspondant à la production. ExecutorsMode.PRESERVE_EXECUTORSpeut être utilisé dansinitializeTestWorkManagerpour conserver les exécuteurs définis dansConfigurationet utiliser le véritable thread principal.
- Les API de coroutines telles que CoroutineWorkeront été déplacées de l'artefact supplémentaire work-runtime-ktx vers l'artefact principal work-runtime. work-runtime-ktx est désormais vide.
Modifications apportées à l'API
- stopReasona été ajouté à- WorkInfo. Il rend- stopReasondisponible une fois que le nœud de calcul a été exécuté. Cela peut être utile dans le reporting- stopReasonde manière utilisable, car une application peut être arrêtée très rapidement une fois qu'un worker a été arrêté. (I21386)
- Autoriser la définition de Clockvia la configuration et l'utiliser pour déterminer la séquence d'exécution des tests Worker. (Ic586e)
- La méthode getStopReason()a été ajoutée àListenableWorkerpour indiquer pourquoi le nœud de calcul a été arrêté. (I07060)
- Ajout de WorkManagerTestInitHelper#closeWorkDatabase()pour éviter l'avertissement de Closeguard concernant les ressources divulguées. (Ia8d49)
- Le constructeur de WorkInfoest désormais public, ce qui peut être utile pour les tests. (Ia00b6, b/209145335)
- work-runtime-ktxest désormais vide.- CoroutineWorkeret d'autres utilitaires spécifiques à Kotlin sont désormais disponibles dans l'artefact work-runtime principal. (I71a9a)
- Ajout de la méthode setNextScheduleTimeOverride, qui permet de définir précisément les plannings de tâches périodiques (I3b4da)
- Ajout de getNextScheduleTimeMillispour obtenir des informations sur la durée d'exécution planifiée dansWorkInfo. (I797e4)
- Les informations sur le délai initial et la périodicité sont ajoutées à WorkInfo. (I52f2f)
- Ajout de la méthode d'observation des nœuds de calcul via les flux avec les méthodes getWorkInfosByTagFlow,getWorkInfoByIdFlow,getWorkInfosForUniqueWorkFlowetgetWorkInfosFlow(If122a)
- Ajout des annotations @RequiresApi(...)manquantes aux constructeurs et aux propriétés deConstraints. Elles sont désormais alignées sur les annotations correspondantes des setters dansConstraints.Builderqui existaient depuis les premières versions deWorkManager. (I6d7d2)
- WorkManagerdispose désormais d'une limite distincte pour les workers d'URI de contenu afin de leur garantir des emplacements dans- JobScheduleret d'éviter ainsi de manquer des mises à jour de contenu en cas de charge élevée. La limite peut être configurée via- Configuration.Builder.setContentUriTriggerWorkersLimit. (Ic128f)
- Des contraintes sont ajoutées à WorkInfo. (I162c0)
Version 2.9.0-rc01
18 octobre 2023
Publication d'androidx.work:work-*:2.9.0-rc01. Liste des commits de la version 2.9.0-rc01
- Aucune modification depuis la dernière version bêta
Version 2.9.0-beta01
6 septembre 2023
Publication d'androidx.work:work-*:2.9.0-beta01. Liste des commits de la version 2.9.0-beta01
Modifications apportées à l'API
- Ajout de constantes pour les motifs d'arrêt renvoyés par WorkInfo.stopReasonetListenableWorker.stopReason(I0cc00)
Version 2.9.0-alpha02
26 juillet 2023
Publication d'androidx.work:work-*:2.9.0-alpha02. Liste des commits de la version 2.9.0-alpha02
Nouvelles fonctionnalités
- WorkManagerfournit désormais une indication sur la raison pour laquelle un nœud de calcul a été arrêté précédemment. Il peut être interrogé à partir d'un worker lui-même via la méthode- getStopReason()ou à partir de- WorkInfovia- getStopReason().
Modifications apportées à l'API
- stopReasona été ajouté à- WorkInfo. Il met- stopReasonà disposition une fois que le nœud de calcul a été exécuté. Cela peut être utile pour le reporting- stopReasonde manière exploitable, car une fois qu'un worker a été arrêté, une application elle-même peut être arrêtée très rapidement. (I21386)
- Autoriser la définition de l'horloge via la configuration et son utilisation pour piloter le séquençage de l'exécution des tests Worker. (Ic586e)
- La méthode getStopReason()a été ajoutée àListenableWorkerpour indiquer pourquoi le nœud de calcul a été arrêté. (I07060)
- Ajout de WorkManagerTestInitHelper#closeWorkDatabase()pour éviter l'avertissement de Closeguard concernant les ressources divulguées. (Ia8d49)
Correction de bugs
- Ajout de la possibilité de contourner overrideNextScheduleTimeà l'aide deTestDriveret correction des problèmes de testabilité. (Ic2905)
Version 2.9.0-alpha01
7 juin 2023
Publication d'androidx.work:work-*:2.9.0-alpha01. Liste des commits de la version 2.9.0-alpha01
Nouvelles fonctionnalités
- Observabilité via les Flow. Au lieu deLiveData, la progression du Worker peut désormais être observée via Flow avecWorkManager.getWorkInfosFlowet des méthodes similaires.
- Planification précise des workers périodiques via setNextScheduleTimeOverride. Cela permet de calculer dynamiquement le prochain programme de travail périodique, qui peut être utilisé pour implémenter des fonctionnalités avancées telles que des temps d'actualisation adaptatifs, un comportement de nouvelle tentative personnalisé ou l'exécution d'un worker de flux d'actualités avant le réveil de l'utilisateur chaque matin sans décalage.ExistingPeriodicWorkPolicy.UPDATEdoit être utilisé avec ces techniques pour éviter d'annuler un worker en cours d'exécution lors de la planification du prochain.
- Tests de WorkManageravec un threading correspondant à la production.ExecutorsMode.PRESERVE_EXECUTORSpeut être utilisé pour conserver les exécuteurs définis dansConfigurationet pour utiliser le véritable thread principal.
- Les API de coroutines telles que CoroutineWorkeront été déplacées de l'artefact supplémentairework-runtime-ktxvers l'artefact principalwork-runtime.work-runtime-ktxest désormais vide.
Modifications apportées à l'API
- Le constructeur de WorkInfoest désormais public, ce qui peut être utile pour les tests. (Ia00b6, b/209145335)
- work-runtime-ktxest désormais vide.- CoroutineWorkeret d'autres utilitaires spécifiques à Kotlin sont désormais disponibles dans l'artefact- work-runtimeprincipal. (I71a9a)
- Ajout de la méthode setNextScheduleTimeOverride, qui permet de définir précisément les plannings de tâches périodiques (I3b4da)
- Changement de nom : getEarliestRunTimeMillisdevientgetNextScheduleTimeMillis. (I2bd7a)
- Les informations sur la prochaine heure d'exécution planifiée sont ajoutées à WorkInfo. (I797e4)
- Les informations sur le délai initial et la périodicité sont ajoutées à WorkInfo. (I52f2f)
- Ajout de la méthode d'observation des nœuds de calcul via les flux avec les méthodes getWorkInfosByTagFlow,getWorkInfoByIdFlow,getWorkInfosForUniqueWorkFlowetgetWorkInfosFlow(If122a)
- Ajout des annotations @RequiresApi(...)manquantes aux constructeurs et aux propriétés de Constraints. Elles sont désormais alignées sur les annotations correspondantes des setters dansConstraints.Builderqui existaient depuis les premières versions deWorkManager. (I6d7d2)
- WorkManagerdispose désormais d'une limite distincte pour les workers d'URI de contenu afin de leur garantir des emplacements dans- JobScheduleret d'éviter ainsi de manquer des mises à jour de contenu en cas de charge élevée. La limite peut être configurée via- Configuration.Builder.setContentUriTriggerWorkersLimit. (Ic128f)
- Des contraintes sont ajoutées à WorkInfo. (I162c0)
Version 2.8
Version 2.8.1
22 mars 2023
Publication d'androidx.work:work-*:2.8.1. Liste des commits de la version 2.8.1
Correction de bugs
- Correction d'une erreur ANR dans RescheduleReceiverqui ne gérait pas correctement deux diffusions simultanées. (b/236906724)
Version 2.8.0
8 février 2023
Publication d'androidx.work:work-*:2.8.0. Liste des commits de la version 1.9.0
Changements importants depuis la version 2.7.0
Nouvelles fonctionnalités
- ll est maintenant possible de mettre à jour WorkRequestsde manière non intrusive, afin de préserver le temps de mise en file d'attente d'origine, le chaînage, etc. Pour en savoir plus sur cette fonctionnalité, consultez ces article de blog détaillé, ainsi que les javadocsWorkManager.updateWorketExistingPeriodicWorkPolicy.UPDATE.
Modifications apportées à l'API
- Ajout de WorkManager.updateWorkpour mettre à jour le travail tout en préservant son temps de mise en file d'attente et son chaînage d'origine. (I9a248, b/219446409)
- ExistingPeriodicWorkPolicy.UPDATEa été ajouté. Cette règle permet de mettre à jour une tâche périodique à partir de son nom. Elle est semblable à la règle- REPLACEexistante, mais est moins intrusive : elle n'annule pas un worker s'il est en cours d'exécution et préserve le temps de mise en file d'attente. Le retard initial et la période sont calculés à partir du temps de mise en file d'attente d'origine et non à partir du temps de mise à jour.- REPLACEest maintenant obsolète, pour éviter toute confusion entre- REPLACEet- UPDATE, dont les noms sont très similaires. Si vous souhaitez conserver la sémantique précédente de- REPLACE, vous pouvez utiliser la nouvelle règle- CANCEL_AND_REENQUEUE, qui est identique à- REPLACE. (I985ed, b/219446409)
- Ajout de la possibilité d'intercepter les exceptions de planification qui fournissent Consumer<Throwable>via setSchedulingExceptionHandler
- Ajout de la possibilité de fournir Consumer<Throwable>via setInitializationExceptionHandler pour déterminer si des problèmes se sont produits lors de l'initialisation de WorkManager.
- Les outils d'aide intégrés pour OneTimeWorkRequestetPeriodicWorkRequestont été transférés deandroidx.work:work-runtime-ktxversandroidx.work:work-runtime(I0010f, b/209145335).
- Ajout de méthodes d'assistance WorkQuery.fromIds,WorkQuery.fromStates,WorkQuery.fromUniqueWorkNamesetWorkQuery.fromTagspour créerWorkQuerydirectement (b/199919736) (If48f2, b/199919736)
- Ajout de getForegroundInfoàWorker. (Ic1ead)
- Dans RxWorkerpour RxJava 2 et RxJava 3,setForegroundrenvoie désormaisCompletable, qui peut être utilisé à la place desetForegroundInfoAsyncqui renvoieListenableFuture
- Dans RxWorkerpour RxJava 2 et RxJava 3,getForegroundInforenvoieSingle, qui peut être utilisé à la place degetForegroundInfoAsyncqui renvoieListenableFuture(b/203851459).
- Les contraintes peuvent désormais être créées directement, sans utiliser Constraints.Builder, ce qui est pratique pour les utilisateurs de Kotlin (Idc390, b/137568653).
- Ajout de la possibilité de vérifier si WorkManagera été initialisé. Ajout d'une APIgetConfiguration()pour les développeurs de bibliothèques afin d'obtenir la configuration avec laquelleWorkManagera été initialisé. (I6eff3, b/212300336)
Correction de bugs
- Correction d'un problème lié au planificateur agressif qui empêchait les workers de s'exécuter immédiatement en cas de charge élevée. (I9686b, b/248111307)
- Ajout de @RequiresPermissionaux API nécessitant l'autorisationPOST_NOTIFICATIONSsur le SDK 33 et versions ultérieures (Ie542e, b/238790278).
- Les annulations dans le CoroutineScopesont propagées auListenableFuturelorsque vous utilisezsuspendCancellableCoroutine.
Version 2.8.0-rc01
7 décembre 2022
Publication d'androidx.work:work-*:2.8.0-rc01. Liste des commits de la version 2.8.0-rc01
Nouvelles fonctionnalités
- Aucune nouvelle fonctionnalité dans cette version. Il s'agit principalement d'un saut de version.
Version 2.8.0-beta02
9 novembre 2022
Publication d'androidx.work:work-*:2.8.0-beta02. Liste des commits de la version 2.8.0-beta02
Correction de bugs
- Correction de la méthode equalsdansWorkInfo, qui auparavant ne prenait pas en compte les informations de la nouvelle génération. (4977cc)
Version 2.8.0-beta01
5 octobre 2022
Publication d'androidx.work:work-*:2.8.0-beta01. Liste des commits de la version 2.8.0-beta01
Correction de bugs
- Correction d'un problème lié au planificateur agressif qui empêchait les workers de s'exécuter immédiatement en cas de charge élevée. (I9686b, b/248111307)
Version 2.8.0-alpha04
7 septembre 2022
Publication d'androidx.work:work-*:2.8.0-alpha04. Liste des commits de la version 2.8.0-alpha04
Modifications apportées à l'API
- WorkerInfo.getGeneration()et- WorkerParameters.getGeneration()ont été ajoutés afin de renvoyer la génération d'un nœud de calcul. Un worker comporte plusieurs générations s'il a été mis à jour via- WorkManager.updateWorkou- WorkManager.enqueueUniquePeriodicWorkà l'aide de- ExistingPeriodicWorkPolicy.UPDATE. Notez que si le nœud de calcul est en cours d'exécution, il est possible que cette méthode renvoie une génération plus récente que celle du nœud de calcul en cours d'exécution si une mise à jour a été effectuée lors de son exécution. (I665c5, b/219446409) (I128a9, b/219446409)
- Ajout de InitializationExceptionHandler, un gestionnaire d'exceptions permettant de déterminer si des problèmes se sont produits lors de l'initialisation deWorkManager. (I061de)
Version 2.8.0-alpha03
10 août 2022
Publication d'androidx.work:work-*:2.8.0-alpha03. Liste des commits de la version 2.8.0-alpha03
Nouvelles fonctionnalités
- ll est maintenant possible de mettre à jour WorkRequestsde manière non intrusive, afin de préserver le temps de mise en file d'attente d'origine, le chaînage, etc. Pour en savoir plus, consultezWorkManager.updateWorketExistingPeriodicWorkPolicy.UPDATE.
Modifications apportées à l'API
- Ajout de WorkManager.updateWorkpour mettre à jour le travail tout en préservant son temps de mise en file d'attente et son chaînage d'origine. (I9a248, b/219446409)
- ExistingPeriodicWorkPolicy.UPDATEa été ajouté. Cette règle permet de mettre à jour une tâche périodique à partir de son nom. Elle est semblable au- REPLACEexistant, mais elle est moins intrusive : elle n'annule pas un nœud de calcul s'il est en cours d'exécution et préserve le temps de mise en file d'attente. Le délai initial et la période sont calculés à partir du temps de mise en file d'attente d'origine et non à partir du temps de mise à jour.- REPLACEest maintenant obsolète, pour éviter toute confusion entre- REPLACEet- UPDATE, dont les noms sont très similaires. Si vous souhaitez conserver la sémantique précédente de- REPLACE, vous pouvez utiliser la nouvelle- CANCEL_AND_REENQUEUE, qui est identique à- REPLACE. (I985ed, b/219446409)
- Ajout de la possibilité d'intercepter les exceptions de planification en définissant un SchedulingExceptionHandler. (I033eb)
- Les outils d'aide intégrés pour OneTimeWorkRequestetPeriodicWorkRequestont été transférés deandroidx.work:work-runtime-ktxversandroidx.work:work-runtime(I0010f, b/209145335).
Correction de bugs
- Ajout de @RequiresPermissionaux API nécessitant l'autorisation POST_NOTIFICATIONS sur le SDK 33 ou versions ultérieures. (Ie542e, b/238790278)
Version 2.8.0-alpha02
6 avril 2022
Publication d'androidx.work:work-*:2.8.0-alpha02. Liste des commits de la version 2.8.0-alpha02
Modifications apportées à l'API
- Les contraintes peuvent désormais être créées directement sans utiliser le constructeur, ce qui est pratique pour les utilisateurs de Kotlin. (Idc390, b/137568653)
- Ajout de la possibilité de vérifier si WorkManagera été initialisé. Ajout d'une APIgetConfiguration()pour les développeurs de bibliothèques afin d'obtenir la configuration avec laquelleWorkManagera été initialisé. (I6eff3, b/212300336)
Version 2.8.0-alpha01
12 janvier 2022
Publication d'androidx.work:work-*:2.8.0-alpha01. Liste des commits de la version 2.8.0-alpha01
Modifications apportées à l'API
- Ajout des méthodes d'assistance WorkQuery.fromStates,WorkQuery.fromUniqueWorkNamesetWorkQuery.fromTagspour créer directement WorkQuery. (If48f2, b/199919736)
- Ajout de méthodes BuildCompat expérimentales pour les futurs SDK. (Iafd82, b/207528937)
- Ajout de getForegroundInfoàWorker. (Ic1ead)
- Ajout de méthodes d'assistance WorkQuery.fromIdspermettant de créer des requêtes WorkQuery directement à partir d'identifiants. (Ie5bdf, b/199919736)
- RxWorker dispose désormais de setForeground, qui renvoieCompletableet qui peut être utilisé à la place desetForegroundInfoAsyncqui renvoieListenableFuture. (I85156)
- getForegroundInfoRxWorker pour RxJava 2 renvoie- Singlequi peut être utilisé à la place de- getForegroundInfoAsyncqui renvoie- ListenableFuture. (I21c91, b/203851459)
- RxWorker pour RxJava 3 dispose désormais de getForegroundInfo, qui renvoieSingleet peut être utilisé à la place degetForegroundInfoAsyncqui renvoieListenableFuture. (I1ca8a)
- RxWorker dispose désormais de setForeground, qui renvoieCompletableet qui peut être utilisé à la place desetForegroundInfoAsyncqui renvoieListenableFuture. (I992a3, b/203851459)
Correction de bugs
- Les annulations dans le CoroutineScopesont propagées auListenableFuturelorsque vous utilisezsuspendCancellableCoroutine. (I77e63)
Version 2.7
Version 2.7.1
17 novembre 2021
Publication d'androidx.work:work-*:2.7.1. Liste des commits de la version 2.7.1
Correction de bugs
- Les annulations dans le CoroutineScopesont propagées auListenableFuturelorsque vous utilisezsuspendCancellableCoroutine. (I77e63)
- Une exception est levée dès que les demandes de travail retardées sont marquées comme accélérées. bef1762
Version 2.7.0
13 octobre 2021
Publication d'androidx.work:work-*:2.7.0. Liste des commits de la version 2.7.0
Modifications importantes depuis la version 2.6.0
- WorkManager introduit une nouvelle API - WorkRequest.Builder.setExpedited(...)pour aider à résoudre les restrictions des services de premier plan dans Android 12.
- À l'aide de - setExpedited(...), WorkManager délègue les tâches accélérées dans JobScheduler à partir d'Android 12, et fournissant une rétrocompatibilité avec les versions précédentes d'Android en les déléguant à un service de premier plan.
Version 2.7.0-rc01
29 septembre 2021
Publication d'androidx.work:work-*:2.7.0-rc01. Liste des commits de la version 2.7.0-rc01
Cette version est identique à la version androidx.work:work-*:2.7.0-beta01.
Version 2.7.0-beta01
1er septembre 2021
Publication d'androidx.work:work-*:2.7.0-beta01. Liste des commits de la version 2.7.0-beta01
Nouvelles fonctionnalités
- Réduction des conflits entre processus multiples lors de l'initialisation de WorkManager.
Modifications apportées à l'API
- Suppression des API @ExperimentalExpeditedWork, puisque les API de plate-forme sous-jacentes pour Android 12 (S) sont stables. (aosp/1792806)
Correction de bugs
- Amélioration du message d'erreur pour les workers accélérés qui n'implémentent pas getForegroundInfoAsync(). (aosp/1809376)
Version 2.7.0-alpha05
21 juillet 2021
Publication d'androidx.work:work-*:2.7.0-alpha05. Liste des commits de la version 2.7.0-alpha05
Cette version contient également des corrections de bugs de la version de 2.6.0-beta02 de WorkManager.
Version 2.7.0-alpha04
2 juin 2021
Publication d'androidx.work:work-*:2.7.0-alpha04.
Cette version contient également les modifications apportées à la version 2.6.0-beta01.
Modifications apportées à l'API
- ListenableWorker.setForegroundAsync()n'est plus obsolète.
- Nous vous recommandons d'utiliser l'API WorkRequest.Builder.setExpedited(...)dans la mesure du possible. Pour mieux gérer les cas où l'application n'est pas soumise à des restrictions des services de premier plan, les développeurs peuvent utiliser l'APIListenableWorker.setForegroundAsync().
- Si ListenableWorker.setForegroundAsync()est appelé, l'application est soumise à des restrictions des services de premier plan, ce qui génère l'exception ForegroundServiceStartNotAllowedException.
Correction de bugs
- Lorsque des tâches sont accélérées, elles ne le sont plus. Elles deviennent des tâches standards.
Version 2.7.0-alpha03
21 avril 2021
Publication d'androidx.work:work-*:2.7.0-alpha03. Liste des commits de la version 2.7.0-alpha03
Nouvelles fonctionnalités
- À partir de la version - 2.6.0-alpha02de WorkManager : ajout de la prise en charge de workers exécutables dans n'importe quel processus. (Iaf200)
- À partir de la version - 2.6.0-alpha02de WorkManager : ajout d'une- RemoteCoroutineWorker, qui est une implémentation de- RemoteListenableWorkerqui peut être liée à un processus à distance. (I30578)
Modifications apportées à l'API
- À partir de la version 2.6.0-alpha02de WorkManager : ajout de la prise en charge de la contrainte de réseauTEMPORARILY_UNMETERED. (I08d5e)
- À partir de la version 2.6.0-alpha02de WorkManager : compatibilité des workers multiprocessus avecsetProgressAsync(). (Ib6d08)
- Dans la version 2.6.0-alpha02de WorkManager :WorkManagerInitializera été rendu afin que d'autresandroidx.startup.Initializerpuissent l'utiliser en tant que dépendances. (I5ab11)
Version 2.7.0-alpha02
10 mars 2021
Publication d'androidx.work:work-*:2.7.0-alpha02. Liste des commits de la version 2.7.0-alpha02
Correction de bugs
- PendingIntentest maintenant modifiable, pour corriger un plantage lorsque vous ciblez Android 12. (b/180884673)
Version 2.7.0-alpha01
18 février 2021
Publication d'androidx.work:work-*:2.7.0-alpha01. Liste des commits de la version 2.7.0-alpha01
Nouvelles fonctionnalités
- WorkManager introduit une nouvelle API - WorkRequest.Builder.setExpedited(...)pour prendre en compte les restrictions des services de premier plan dans Android 12.- Les applications ne peuvent plus lancer de service de premier plan lorsqu'elles sont en arrière-plan. Par conséquent, pour mieux gérer les tâches à exécution longue qui étaient auparavant liées au cycle de vie d'un service de premier plan, les applications peuvent marquer les - WorkRequestcomme prioritaires.- Cette API remplace les API - setForegroundAsync(...)/- setForeground(...), qui sont désormais obsolètes.- À l'aide de - setExpedited(...), WorkManager délègue les tâches accélérées dans- JobSchedulerà partir d'Android 12, et fournissant une rétrocompatibilité avec les versions précédentes d'Android en les déléguant à un service de premier plan.
Modifications apportées à l'API
- Ajout de la compatibilité avec la WorkRequestaccélérée.
Version 2.6.0
Version 2.6.0
1er septembre 2021
Publication d'androidx.work:work-*:2.6.0. Liste des commits de la version 2.6.0
Modifications importantes depuis la version 2.5.0
- WorkManager utilise désormais - androidx.startuppour initialiser WorkManager. Si vous utilisiez- tools:node="remove"sur- ContentProviderpour initialiser WorkManager par le passé, vous devez maintenant procéder comme suit.- <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" />
- Ajout de la prise en charge des nœuds de calcul qui peuvent être exécutés dans n'importe quel processus. (Iaf200) 
- Ajout d'un - RemoteCoroutineWorkerqui est une implémentation de RemoteListenableWorker qui peut être liée à un processus à distance. (I30578)
Version 2.6.0-rc01
4 août 2021
Publication d'androidx.work:work-*:2.6.0-rc01. Liste des commits de la version 2.6.0-rc01
Cette version est identique à la version androidx.work:work-*:2.6.0-beta02.
Version 2.6.0-beta02
21 juillet 2021
Publication d'androidx.work:work-*:2.6.0-beta02. Liste des commits de la version 2.6.0-beta02
Correction de bugs
- RemoteWorkManagerse débloque désormais correctement de- RemoteWorkManagerService, ce qui permet à- RemoteWorkManagerServicede le nettoyer correctement. aosp/1730694
- RemoteListenableWorkerse débloque désormais correctement de- RemoteWorkerService, ce qui permet à- RemoteWorkerServicede le nettoyer correctement. aosp/1743817
- ForceStopRunnables'exécute désormais uniquement dans le processus principal de l'application. Cette optimisation permet d'éviter les conflits de ressources pour les applications qui utilisent plusieurs processus. aosp/1749180, aosp/1761729
Version 2.6.0-beta01
2 juin 2021
Publication d'androidx.work:work-*:2.6.0-beta01. Liste des commits de la version 2.6.0-beta01
Cette version contient des améliorations mineures de la documentation. La version est en grande partie identique à 2.6.0-alpha02.
Version 2.6.0-alpha02
21 avril 2021
Publication d'androidx.work:work-*:2.6.0-alpha02. Liste des commits de la version 2.6.0-alpha02
Nouvelles fonctionnalités
- Ajout de la prise en charge des nœuds de calcul qui peuvent être exécutés dans n'importe quel processus. (Iaf200) 
- Ajout d'un - RemoteCoroutineWorkerqui est une implémentation de- RemoteListenableWorkerqui peut être liée à un processus à distance. (I30578)
Modifications apportées à l'API
- Ajout de la compatibilité avec la contrainte réseau TEMPORARILY_UNMETERED. (I08d5e)
- Compatibilité du nœud de calcul multiprocessus avec setProgressAsync(). (Ib6d08)
- WorkManagerInitializera été rendu public afin que d'autres- androidx.startup.Initializerpuissent l'utiliser en tant que dépendances. (I5ab11)
Version 2.6.0-alpha01
24 mars 2021
Publication d'androidx.work:work-*:2.6.0-alpha01. Liste des commits de la version 2.6.0-alpha01.
Nouvelles fonctionnalités
- WorkManagerutilise désormais- androidx.startuppour initialiser WorkManager. Auparavant, cette initialisation était réalisée par- androidx.work.impl.WorkManagerInitializer. (aosp/1608813)- Si vous utilisiez - tools:node="remove"sur- ContentProviderpour initialiser le cycle de vie des processus par le passé, vous devez maintenant procéder comme suit.- <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>- (ou) - <!-- If you want to disable android.startup completely. --> <provider android:name="androidx.startup.InitializationProvider" android:authorities="${applicationId}.androidx-startup" tools:node="remove"> </provider>
Modifications apportées à l'API
- Ajout d'une API Result.getOutputData()qui renvoie leoutputDatade ListenableWorker. (Ie51e3)
Correction de bugs
- Ajout d'une solution de contournement à un bug OEM qui provoque le renvoi d'une SecurityExceptionlors de l'utilisation de l'APIAlarmManager. (aosp/1587518)
Version 2.5.0
Version 2.5.0
27 janvier 2021
Publication d'androidx.work:work-*:2.5.0. Liste des commits de la version 2.5.0
Principales modifications depuis la version 2.4.0
- Nouvel artefact :work:work-multiprocesspour les applications qui utilisent plusieurs processus. Cela permet d'améliorer les performances en unifiant la planification des demandes de travail en un seul processus.- Pour utiliser work-multiprocess, définissez une dépendance sur :implementation "androidx.work:work-multiprocess:2.5.0"
- Désignez un processus principal à l'aide de Configuration.Builder.setDefaultProcessName(String).
- Lorsque vous utilisez work-multiprocess, vous devez également utiliser RemoteWorkManager pour gérer vosWorkRequest. RemoteWorkManager contacte toujours le processus désigné. Le planificateur en cours de traitement s'exécute également dans le processus désigné.
 
- Pour utiliser 
- Parfois, ActivityManagerne parvient pas à instancierJobServicepour démarrer une tâche. Cela entraîne la suppression silencieuse de la tâche sous-jacente en raison d'un bug de la plate-forme.WorkManagers'assure désormais qu'il existe des tâches de remplacement pour chaqueWorkRequestlorsque le rapprochement des tâches initialise uneApplication. La fiabilité d'exécution des tâches est considérablement améliorée. (b/172475041, aosp/1489577)
- WorkManagerlimite la croissance de la base de données en réduisant la durée de la mémoire tampon dont le suivi des- WorkRequestest effectué une fois la- WorkRequestterminée. Cette durée était autrefois de- 7jours. Elle a été réduite à- 1jours + la durée de keepResultsForAtLeast. (aosp/1419708)
- TestListenableWorkerBuilderest désormais compatible avec la classe étendue avec- ListenableWorkerpour faciliter les tests. (aosp/1443299, b/169787349)
- WorkManager Inspector est désormais disponible lorsque vous utilisez Android Studio Arctic Fox.
Version 2.5.0-rc01
13 janvier 2021
Publication d'androidx.work:work-*:2.5.0-rc01. Liste des commits de la version 2.5.0-rc01.
Correction de bugs
- Correction d'un bug qui empêchait getWorkInfosLiveDatad'être invalidé correctement après la mise à jour des entités lors de l'utilisation de l'API basée surWorkQuery. (aosp/1540566, b/173769028)
- Correction d'un bug qui empêchait les transactions de base de données d'être marquées comme réussies dans certains rares cas. Cela engendrait des problèmes sur certains appareils Motorola. (aosp/1535368, b/175944460)
- Correction d'un bug dans lequel les NoSuchElementExceptionétaient ignorées lorsque vous essayiez de les dissocier d'un processus mort. (aosp/1530589)
- Amélioration de ConstraintTrackingWorkerpour n'arrêter unListenableWorkerque s'il n'a pas déjà été arrêté. (aosp/1496844, b/172946965)
- Mise à jour des bibliothèques androidx.work pour cibler Java 8. (Ibd2f2)
Version 2.5.0-beta02
2 décembre 2020
Publication d'androidx.work:work-*:2.5.0-beta02. Liste des commits de la version 2.5.0-beta02
Correction de bugs
- Correction du bug suivant : dans androidx.work:work-multiprocess, WorkManager bloquait par inadvertance le thread appelant lors de la liaison au processus désigné. (aosp/1475538)
- Correction d'un bug qui empêchait de rapprocher correctement les PeriodicWorkRequest. (b/172475041, aosp/1489577)
- Ajout d'une solution provisoire pour un bug de plate-forme qui se produisait à l'arrêt du service de premier plan lors de l'utilisation des API setForeground*. (b/170924044, aosp/1489901)
Version 2.5.0-beta01
28 octobre 2020
Publication d'androidx.work:work-*:2.5.0-beta01. Liste des commits de la version 2.5.0-beta01
Nouvelles fonctionnalités
- WorkManagerlimite automatiquement le nombre de- WorkRequestque le planificateur en cours de traitement peut récupérer. Les requêtes sont toujours exécutées dans l'ordre FIFO. (aosp/1455228)
- WorkManagertente de récupérer lorsque le datastore de l'application est dans un état incorrect. (aosp/1463103)
Correction de bugs
- Lorsque les ListenableWorkersont interrompus, marquez-les immédiatement commeENQUEUEDafin de pouvoir les reprogrammer par la suite. (aosp/1455618, b/170273988)
Version 2.5.0-alpha03
14 octobre 2020
Publication d'androidx.work:work-*:2.5.0-alpha03. Liste des commits de la version 2.5.0-alpha03
Modifications apportées à l'API
- TestListenableWorkerBuilderet- TestWorkerBuildern'utilisent pas de types bruts. (I883ad, b/169787349)
Correction de bugs
- Utilisation de ApplicationInfopour déterminer le nom du processus d'application par défaut. (b/168716641, aosp/1429950)
- Correction des règles de visibilité pour RemoteWorkManageretRemoteWorkContinuation. Ces API ne sont plus marquées comme@Restricted. (aosp/1432091)
- Correction des règles ProGuard pour :work:work-multiprocess. (aosp/1432091)
- Amélioration des cycles de vie des notifications pour les tâches de longue durée associées à un service de premier plan. (b/168502234, aosp/1431331)
Version 2.5.0-alpha02
16 septembre 2020
Publication d'androidx.work:work-*:2.5.0-alpha02. Liste des commits de la version 2.5.0-alpha02
Nouvelles fonctionnalités
- Ajout d'une API à WorkQuery pour pouvoir utiliser des idafin d'interroger desWorkInfo. (aosp/1412372, b/157335295)
- Amélioration de la compatibilité de WorkManager avec les applications qui utilisent plusieurs processus avec un nouvel artefact (androidx.work:work-multiprocess:*). Ce nouvel artefact permet de résoudre certains problèmes rencontrés par les applications volumineuses, y compris :- WorkManager doit généralement être initialisé dans chaque processus d'application. Cela n'est pas très pratique, car les conflits entre processus multiples augmentent, ce qui entraîne d'autres problèmes. WorkManager dispose désormais de nouvelles API qui peuvent être utilisées pour désigner un processus d'application principal à l'aide de Configuration#setDefaultProcessName(processName).processNameest un nom de processus complet qui ressemble àpackageName:processName(p. ex.com.example:remote).
- Ensemble de nouvelles API : RemoteWorkManageretRemoteWorkContinuationpour les requêtes de travailenqueue,canceletquery. Ces API ne comprennent pas de variantesLiveDatapour éviter les conflits entre processus multiples. Tous les appels àenqueue,canceletquerysont transférés vers un processus d'applicationprimaryà l'aide d'AIDL et renvoient unListenableFuturecourant. (aosp/1392657, aosp/1411210, aosp/1412215, aosp/1417713)
 
- WorkManager doit généralement être initialisé dans chaque processus d'application. Cela n'est pas très pratique, car les conflits entre processus multiples augmentent, ce qui entraîne d'autres problèmes. WorkManager dispose désormais de nouvelles API qui peuvent être utilisées pour désigner un processus d'application principal à l'aide de 
Modifications apportées à l'API
- WorkManager élimine de manière plus agressive les WorkRequestterminés qui n'ont pas de dépendances incomplètes. La durée de la mémoire tampon est passée de7jours à1jour. (aosp/1419708)
Correction de bugs
- WorkManager rapproche désormais les tâches de manière proactive, pour que les tâches WorkRequestetJobSchedulerse synchronisent lors de l'initialisation deWorkManager. (aosp/1412794, b/166292069)
Version 2.5.0-alpha01
19 août 2020
Publication d'androidx.work:work-*:2.5.0-alpha01. Liste des commits de la version 2.5.0-alpha01
Nouvelles fonctionnalités
- Modifications des API internes qui nous permettent de fournir de meilleurs outils avec WorkManagerà l'avenir. Des informations supplémentaires seront bientôt disponibles.
Correction de bugs
- Gestion des SecurityExceptionlorsque vous suivez l'état du réseau sur certains appareils. (aosp/1396969)
Contribution externe
- Correction de la documentation pour ArrayCreatingInputMergerpar Zac Sweers (github/43).
Version 2.4.0
Version 2.4.0
22 juillet 2020
Publication d'androidx.work:work-*:2.4.0. Liste des commits de la version 2.4.0
Principales modifications depuis la version 2.3.0
- Le planificateur dans le processus de WorkManagerest maintenant plus performant. Auparavant, la fonctionScheduleren cours de traitement ne prenait en compte que l'exécution d'une tâche qui n'était pas retardée et dont les contraintes étaient remplies. Le planificateur en cours de traitement suit lesWorkRequestqui pourraient être exécutées à l'avenir, y compris les PeriodicWorkRequests. LeScheduleren cours de traitement n'applique pas de limites de planification (mais reste limité à la taille deExecutorutilisée par WorkManager). Cela signifie que l'application peut désormais exécuter beaucoup plus de WorkRequests lorsqu'elle est exécutée au premier plan. Pour gérer l'exécution des tâches différées au premier plan,WorkManagerintroduit également un nouveauRunnableSchedulerconfigurable. (aosp/1185778)
- WorkManager est désormais compatible avec RxJava 3. Pour utiliser RxJava 3, vous devez inclure la dépendance suivante : implementation "androidx.work:work-rxjava3:2.4.0". (aosp/1277904)
- Ajout de la possibilité d'interroger des WorkInfoà l'aide d'uneWorkQuery. Cela est utile lorsque les développeurs souhaitent interroger desWorkInfoen combinant plusieurs attributs. Pour en savoir plus, consultezWorkQuery.Builder.fromStates(...),WorkQuery.Builder. fromTags(...)ouWorkQuery.Builder.fromUniqueWorkNames(...). (aosp/1253230, b/143847546)
- Ajout de la possibilité de demander des informations de diagnostic à - WorkManageren utilisant :- adb shell am broadcast -a "androidx.work.diagnostics.REQUEST_DIAGNOSTICS" -p "<your_app_package_name>"- Vous y trouverez de nombreuses informations utiles, y compris : - WorkRequests traitées au cours des dernières 24 heures.
- WorkRequests en cours d'exécution.
- WorkRequests planifiées. (aosp/1235501)
 
- Ajout de - ExistingWorkPolicy.APPEND_OR_REPLACE, semblable à- APPEND, mais qui remplace une chaîne qui a été annulée ou qui n'a pas respecté les conditions préalables. (b/134613984, aosp/1199640)
- Possibilité d'ajouter un - RunnableSchedulerpersonnalisé pour suivre les WorkRequests qui doivent être exécutées ultérieurement. Utilisé par le planificateur en cours de traitement. (aosp/1203944)
- Ajout de la prise en charge de l'ajout dynamique de fabriques auxquelles déléguer lorsque vous utilisez une - DelegatingWorkerFactory. (b/156289105, aosp/1309745)
- Alignement plus précis du suivi des contraintes - BATTERY_NOT_LOWavec la plate-forme. (aosp/1312583)
- Le planificateur en cours de traitement utilise désormais des API plus efficaces pour déterminer le nom du processus. Cette approche est utile pour les applications qui utilisent plusieurs processus. (aosp/1324732) 
- Voici les nouvelles règles d'analyse lint qui s'appliquent : - Utilisation du foregroundServiceTypeapproprié lorsque vous utilisez les APIsetForegroundAsync(). (b/147873061, aosp/1215915)
- Définition des ID JobScheduler que WorkManager doit utiliser lors de l'utilisation directe des API JobService. aosp/1223567
- Ajout d'une règle d'analyse lint qui garantit que ListenableWorkerles implémentations sont désormaispubliclorsque vous utilisez la valeur par défautWorkerFactory. (aosp/1291262)
 
- Utilisation du 
- Les appels à - setForegroundAsync()qui ne sont pas terminés avant la fin d'un- ListenableWorkerseront désormais signalés via un- IllegalStateExceptionsur le- ListenableFuturerenvoyé. (aosp/1262743)
- Nous avons corrigé un bug qui empêchait l'arrêt de - ForegroundServiceaprès l'interruption d'un- Workerau premier plan. (b/155579898, aosp/1302153)
- Correction du bug suivant : - WorkManagertentait d'exécuter plusieurs instances d'un- Workerlié à un service de premier plan. (b/156310133, aosp/1309853)
Version 2.4.0-rc01
24 juin 2020
Publication d'androidx.work:work-*:2.4.0-rc01. Liste des commits de la version 2.4.0-rc01
Correction de bugs
- Le planificateur en cours de traitement utilise désormais des API plus efficaces pour déterminer le nom du processus. Cette approche est utile pour les applications qui utilisent plusieurs processus. (aosp/1324732)
Version 2.4.0-beta01
20 mai 2020
Publication d'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 et androidx.work:work-testing:2.4.0-beta01. Liste des commits de la version 2.4.0-beta01
Correction de bugs
- Nous avons corrigé un bug qui empêchait l'arrêt de ForegroundServiceaprès l'interruption d'unWorkerau premier plan. (b/155579898, aosp/1302153)
- Correction du bug suivant : WorkManagertentait d'exécuter plusieurs instances d'unWorkerlié à un service de premier plan. (b/156310133, aosp/1309853)
- Ajout de la prise en charge de l'ajout dynamique de fabriques auxquelles déléguer lorsque vous utilisez une DelegatingWorkerFactory. (b/156289105, aosp/1309745)
- Alignement plus précis du suivi des contraintes BATTERY_NOT_LOWavec la plate-forme. (aosp/1312583)
Version 2.4.0-alpha03
29 avril 2020
Publication d'androidx.work:work-*:2.4.0-alpha03. Liste des commits de la version 2.4.0-alpha03
Nouvelles fonctionnalités
- WorkManager est désormais compatible avec RxJava 3. Pour utiliser RxJava 3, vous devez inclure la dépendance suivante : implementation "androidx.work:work-rxjava3:2.4.0-alpha03". (aosp/1277904)
- Ajout d'une règle d'analyse lint qui garantit que ListenableWorkerles implémentations sont désormaispubliclorsque vous utilisez la valeur par défautWorkerFactory. (aosp/1291262)
Modifications apportées à l'API
- Appeler setProgressAsync()après la fin de l'exécution d'unListenableWorkerindique désormais uneExceptionviaListenableFuture. (aosp/1285494)
- WorkQuery.Builderest désormais marqué comme- final. (aosp/1275037)
- Les méthodes de fabrique de WorkQuery.Builder(withStates,withTagsetwithUniqueWorkNames) ont été renommées respectivementfromStates,fromTagsetfromUniqueWorkNames. (aosp/1280287)
Correction de bugs
- Les SecurityExceptionlors du suivi de l'état du réseau d'un appareil sont ignorées. (b/153246136, aosp/1280813)
Version 2.4.0-alpha02
1er avril 2020
Publication d'androidx.work:work-*:2.4.0-alpha02. Liste des commits de la version 2.4.0-alpha02.
Nouvelles fonctionnalités
- Ajout d'une règle d'analyse lint qui avertit lorsque les WorkRequestnécessitent à la foisConstraints.setRequiresCharging(...)etConstraints.setRequiresDeviceIdle(...). Certains appareils ne sont jamais en charge tout en restant inactifs. Ces requêtes s'exécutent donc moins souvent que prévu. (aosp/1253840)
Modifications apportées à l'API
- Ajout de la possibilité d'interroger des - WorkInfoà l'aide d'une- WorkQuery. Cela est utile lorsque les développeurs souhaitent interroger des- WorkInfoen combinant plusieurs attributs. Pour en savoir plus, consultez- WorkQuery.Builder withStates(...),- WorkQuery.Builder withTags(...)ou- WorkQuery.Builder withUniqueWorkNames(...). (aosp/1253230, b/143847546)
- Les appels à - setForegroundAsync()qui ne sont pas terminés avant la fin d'un- ListenableWorkerseront désormais signalés via un- IllegalStateExceptionsur le- ListenableFuturerenvoyé. (aosp/1262743)
Correction de bugs
- Correction de la règle d'analyse lint qui recherche les durées d'intervalle non valides pour les PeriodicWorkRequest. (aosp/1254846, b/152606442)
Version 2.4.0-alpha01
4 mars 2020
Publication d'androidx.work:work-*:2.4.0-alpha01. Liste des commits de la version 2.4.0-alpha01
Nouvelles fonctionnalités
- Le planificateur dans le processus de - WorkManagerest maintenant plus performant. Auparavant, le planificateur en cours de traitement ne prenait en compte que l'exécution d'une tâche qui n'était pas retardée et dont les contraintes étaient remplies. Le planificateur en cours de traitement suit les- WorkRequestqui pourraient être exécutées à l'avenir, y compris les- PeriodicWorkRequest. De plus, le planificateur en cours de traitement n'applique pas les limites de planification (mais reste limité à la taille de- Executorutilisée par WorkManager). Cela signifie que l'application peut désormais exécuter beaucoup plus de- WorkRequestlorsqu'elle est exécutée au premier plan. (aosp/1185778)
- Ajout de la possibilité de demander des informations de diagnostic à WorkManager à l'aide de - adb shell am broadcast -a "androidx.work.diagnostics.REQUEST_DIAGNOSTICS" -p "<your_app_package_name>". Vous y trouverez de nombreuses informations utiles, y compris :- WorkRequests traitées au cours des dernières 24 heures.
- WorkRequests en cours d'exécution.
- WorkRequests planifiées. (aosp/1235501)
 
- Voici les nouvelles règles d'analyse lint qui s'appliquent : - Utilisation du foregroundServiceTypeapproprié lorsque vous utilisez les APIsetForegroundAsync(). (b/147873061, aosp/1215915)
- Spécification des ID JobSchedulerqueWorkManagerdoit utiliser lors de l'utilisation directe des APIJobService. (aosp/1223567)
 
- Utilisation du 
Modifications apportées à l'API
- Ajout de - ExistingWorkPolicy.APPEND_OR_REPLACE, semblable à- APPEND, mais qui remplace une chaîne qui a été annulée ou qui n'a pas respecté les conditions préalables. (b/134613984, aosp/1199640)
- Possibilité d'ajouter un - RunnableSchedulerpersonnalisé pour suivre les- WorkRequestqui doivent être exécutées ultérieurement. Utilisé par le planificateur en cours de traitement. (aosp/1203944)
Correction de bugs
- setProgress()a été retiré de- RxWorker, car il renvoyait précédemment un- Single<Void>, qui est un type impossible. Ajout d'une nouvelle API- setCompletableProgress()qui renvoie un- Completable. Ajout de nouvelles règles Lint pour faciliter la migration vers les nouvelles API. (b/150080946, aosp/1242665)
Version 2.3.4
Version 2.3.4
18 mars 2020
Publication d'androidx.work:work-*:2.3.4. Liste des commits de la version 2.3.4
Correction de bugs
- Correction d'un bug qui entraînait l'exécution de plusieurs instances d'une Workerde longue durée après un délai de 10 minutes. (aosp/1247484, b/150553353)
- Correction de l'erreur lint IssueRegistryde WorkManager. Merci à @ZacSweers de Slack pour sa contribution. (aosp/1217923)
Version 2.3.3
Version 2.3.3
4 mars 2020
Publication d'androidx.work:work-*:2.3.3. Liste des commits de la version 2.3.3
Correction de bugs
- Correction d'un bug qui empêchait la replanification d'un Workersi celui-ci était interrompu (b/150325687, aosp/1246571)
Version 2.3.2
Version 2.3.2
19 février 2020
Publication d'androidx.work:work-*:2.3.2. Liste des commits de la version 2.3.2
Correction de bugs
- Correction d'un problème qui empêchait WorkManager de dépasser la limite de 100 tâches dans JobScheduler dans de rares cas. (aosp/1226859, b/149092520)
- Correction d'une condition de concurrence dans ConstraintControllers. (aosp/1220100)
- Amélioration de la gestion du cycle de vie du service de premier plan pour les nœuds de calcul de longue durée. (aosp/1226295)
- Amélioration de la gestion de l'annulation des notifications pour les nœuds de calcul de longue durée en cas d'annulation d'un nœud de calcul. (aosp/1228346)
Version 2.3.1
Version 2.3.1
5 février 2020
Publication d'androidx.work:work-*:2.3.1.  Liste des commits de la version 2.3.1
Correction de bugs
- Amélioration de la gestion du cycle de vie des Notificationpour lesWorkerde longue durée qui s'exécutent lorsqu'unServicede premier plan est actif. (aosp/1218539, b/147249312)
- WorkManagerdépend désormais de- androidx.sqlite:sqlite-framework:2.1.0(version stable). (aosp/1217729)
- Ajout de règles d'analyse lint pour garantir la définition d'une foregroundServiceTypedans leAndroidManifest.xmllors de l'utilisation deforegroundServiceTypedansForegroundInfo. (aosp/1214207, b/147873061)
Version 2.3.0
Version 2.3.0
22 janvier 2020
Publication d'androidx.work:work-*:2.3.0 sans aucune modification par rapport à la version 2.3.0-rc01.  Liste des commits de la version 2.3.0
Changements importants depuis la version 2.2.0
- Prise en charge des tâches de longue durée ou importantes via ListenableWorker#setForegroundAsync().
- Prise en charge de la progression des nœuds de calcul via ListenableWorker#setProgressAsync().
- WorkManager intègre désormais des règles d'analyse lint supplémentaires dans la bibliothèque, ce qui permet de détecter plus rapidement les bugs.
Version 2.3.0-rc01
8 janvier 2020
Publication d'androidx.work:work-*:2.3.0-rc01.  Liste des commits de la version 2.3.0-rc01.
Cette version est identique à la version 2.3.0-beta02.
Correction de bugs
- L'artefact work-testingdéfinit désormais une dépendanceapisurwork-runtime-ktx. (aosp/1194410)
Version 2.3.0-beta02
18 décembre 2019
Publication d'androidx.work:work-*:2.3.0-beta02.  Liste des commits de la version 2.3.0-beta02.
Nouvelles fonctionnalités
- Ajout d'un message d'erreur amélioré pour les exceptions SQLite non récupérables. (aosp/1185777)
- Ajout d'une règle d'analyse lint qui garantit que le fournisseur de contenu androidx.work.impl.WorkManagerInitializerest supprimé deAndroidManifest.xmllors de l'utilisation de l'initialisation à la demande. (aosp/1167007)
- Ajout d'un avertissement d'analyse lint lorsque enqueue()est utilisé pourPeriodicWorkRequestau lieu deenqueueUniquePeriodicWork(). (aosp/1166032)
Modifications apportées à l'API
- ForegroundInfoexige désormais que vous indiquiez le- notificationIdà utiliser avec- ListenableWorker.setForegroundAsync(). Il s'agit d'une modification destructive. Cela vous permet d'exécuter plusieurs- Workerde longue durée en parallèle.- WorkManagergère également mieux les durées de vie des- Notificationfournis. (b/145473554, aosp/1181208, asop/1181216, asop/1183577)
Correction de bugs
- Correction d'un bug dans l'implémentation d'AlarmManager qui entraînait un nettoyage incorrect des alarmes. (aosp/1156444)
- Correction d'un bug qui provoquait la création d'une chaîne WorkContinuationincorrecte en cas de liste vide deWorkRequest. (b/142835274, aosp/1157051)
Modifications de la dépendance
- WorkManager utilise désormais la version 2.2.2 de Room.
Version 2.3.0-beta01
20 novembre 2019
Publication d'androidx.work:work-*:2.3.0-beta01.  Liste des commits de la version 2.3.0-beta01
Nouvelles fonctionnalités
- Ajout d'une règle d'analyse lint qui empêche les erreurs de développement causées par une implémentation incorrecte de androidx.work.Configuration.Providerlors de l'initialisation à la demande. aosp/1164559
Version 2.3.0-alpha03
23 octobre 2019
Publication d'androidx.work:work-*:2.3.0-alpha03.  Liste des commits de la version 2.3.0-alpha03
Nouvelles fonctionnalités
- Ajout de l'API WorkManager.createCancelPendingIntent(), qui permet d'annuler facilement desWorkRequestsans avoir à enregistrer un autre composant dans leAndroidManifest.xml. En particulier, cette API facilite l'annulation deWorkRequestdepuisNotification. Elle devrait être associée aux nouvelles API au premier plan dans la version 2.3.0.
- WorkManager dépend désormais de la version stable de androidx.room:*:2.2.0.
Modifications apportées à l'API
- Changement de nom : ForegroundInfo.getNotificationType()devientForegroundInfo.getForegroundServiceType(), pour être cohérent avec les API de la plate-forme sous-jacente. (b/142729893, aosp/1143316)
Correction de bugs
- Correction d'un bug causé par un appel inutile à setTransactionSuccessful()en dehors d'une transaction. Cela se produit pour les migrations rares. (b/142580433, aosp/1141737)
Version 2.3.0-alpha02
9 octobre 2019
Publication d'androidx.work:work-*:2.3.0-alpha02.  Liste des commits de la version 2.3.0-alpha02
Nouvelles fonctionnalités
- WorkManager permet désormais d'exécuter des tâches de longue durée ou importantes qui doivent être maintenues actives par l'OS. Pour en savoir plus, consultez ListenableWorker#setForegroundAsync()(ouCoroutineWorker#setForeground()pour Kotlin). (aosp/1133636)
Modifications apportées à l'API
- Changement de nom : l'API containsKeydansDatadevienthasKeyWithValueOfType. La méthode d'extension correspondante dans la bibliothèquektxa également été renommée. (b/141916545)
Correction de bugs
- Les planifications de WorkManager fonctionnent de façon équitable lorsque le nombre de WorkRequesten file d'attente approche des limites de planification. (aosp/1105766)
- WorkManager n'appelle ListenableWorker#onStopped()que si le travail n'est pas déjà terminé. (b/140055777)
- WorkManager supprime désormais les informations de progression lorsqu'un nœud de calcul est interrompu ou atteint son état final. (aosp/1114572)
- Datadispose désormais d'une représentation- toString()bien plus utile. (b/140945323)
- Datapropose désormais une méthode- equals()plus efficace. Il accepte également- deepEqualspour les types- Array. (b/140922528)
- WorkManager stocke désormais sa base de données interne et ses fichiers de préférences dans un répertoire sans sauvegarde. (b/114808216)
Version 2.3.0-alpha01
22 août 2019
Publication d'androidx.work:work-*:2.3.September 5, 20190-alpha01.  Les commits inclus dans cette version sont disponibles sur cette page.
Nouvelles fonctionnalités
- Les ListenableWorkerpeuvent désormais définir leur progression à l'aide de l'APIsetProgressAsync(). Ajout d'une APIsetProgresssuspendcorrespondante dansCoroutineWorkeret d'unesetProgressdansRxWorkerqui renvoie unSingle<Void>. Avec ces nouvelles API, les workers peuvent transmettre des informations de progression viaWorkInfo, qui dispose d'une APIgetProgresscorrespondante. (b/79481554)
- Datadispose d'une API- containsKey()qui permet de vérifier que les données d'entrée pour- Workercomportent des clés avec le type attendu. (b/117136838)
- Datapeut désormais être sérialisé à l'aide de- Data.toByteArray()et- Data.fromByteArray(). Notez qu'il n'existe aucune garantie quant à la gestion des versions avec- Data. Vous ne devez donc pas les conserver ni les utiliser pour la communication inter-processus entre les applications. Ils ne peuvent être utilisés qu'entre plusieurs processus de la même application.
- Ajout de la possibilité de définir un InputMergerFactoryviaConfiguration.setInputMergerFactory. (b/133273159)
Modifications apportées à l'API
- WorkManager génère une instance de IllegalStateExceptionsiWorkerFactoryrenvoie une instance deListenableWorkerprécédemment appelée. (b/139554406)
- Modifications apportées à la documentation sur l'annulation de ListenableFutureet au rappelonStopped()dansListenableWorker. (b/138413671)
Correction de bugs
- Le planificateur en cours de traitement ignore maintenant les WorkRequestavec la contrainteidle. Ces requêtes ne sont désormais récupérées parJobSchedulerque lorsque l'appareil estidle. (aosp/1089779)
- TestSchedulerutilise désormais correctement le- Executorspécifié pour son exécuteur de tâches interne lors des tests. (aosp/1090749)
Version 2.2.0
Version 2.2.0
15 août 2019
Publication d'androidx.work:work-*:2.2.0.  Les commits inclus dans cette version sont disponibles sur cette page.
Cette version est identique à la version androidx.work:work-*:2.2.0-rc01.
Changements importants apportés à la version 2.1.0 dans la version 2.2.0
androidx.work:work-gcm:2.2.0 est un nouvel artefact Maven qui permet d'utiliser GCMNetworkManager en tant que planificateur lorsque les services Google Play sont disponibles pour les niveaux d'API 22 ou inférieurs. Cette dépendance facultative permet d'améliorer la fiabilité du traitement en arrière-plan et les performances sur les anciennes versions de l'API. Si votre application fait appel aux services Google Play, ajoutez cette dépendance à votre fichier Gradle pour obtenir automatiquement la prise en charge de GCMNetworkManager. Si les Services Play ne sont pas disponibles, WorkManager continuera à utiliser AlarmManager sur les anciens appareils.
Version 2.2.0-rc01
30 juillet 2019
Publication d'androidx.work:work-*:2.2.0-rc01.  Les commits inclus dans cette version sont disponibles sur cette page.
Correction de bugs
- Correction d'un bug dans l'implémentation d'AlarmManager qui entraînait l'arrêt prématuré du service et entraînait une RejectedExecutionExceptiondans de rares cas. (aosp/1092374) (b/138238197).
- Ajout d'une solution provisoire pour un NullPointerExceptionsi vous utilisez les APIJobSchedulersur certains appareils. (aosp/1091020) (b/138364061), (b/138441699)
Version 2.2.0-beta02
19 juillet 2019
Publication d'androidx.work:work-*:2.2.0-beta02.  Les commits inclus dans cette version sont disponibles sur cette page.
Correction de bugs
- Suppression de la dépendance JaCoCo non intentionnelle introduite dans 2.2.0-beta01.
Version 2.2.0-beta01
17 juillet 2019
Publication d'androidx.work:work-*:2.2.0-beta01.  Les commits inclus dans cette version sont disponibles sur cette page.
Nouvelles fonctionnalités
- androidx.work:work-gcm:2.2.0-beta01est un nouvel artefact Maven qui permet d'utiliser GCMNetworkManager en tant que planificateur lorsque les services Google Play sont disponibles pour les niveaux d'API 22 ou inférieurs. Cette dépendance facultative permet d'améliorer la fiabilité du traitement en arrière-plan et les performances sur les anciennes versions de l'API. Si votre application fait appel aux services Google Play, ajoutez cette dépendance à votre fichier Gradle pour obtenir automatiquement la prise en charge de GCMNetworkManager. Si les Services Play ne sont pas disponibles, WorkManager continuera à utiliser AlarmManager sur les anciens appareils.
Correction de bugs
- Correction de IllegalArgumentExceptionlors du suivi de l'état du réseau sur les tablettes Nvidia Shield K1. (aosp/1010188)
Version 2.1.0
Version 2.1.0
11 juillet 2019
Publication d'androidx.work:work-*:2.1.0. Cette version est identique à la version androidx.work:work-*:2.1.0-rc01.
Changements importants depuis la version 2.0.1
- work-runtime-ktxnécessite désormais Java 8. Si vous rencontrez des problèmes, vous pouvez ajouter ce qui suit à votre- build.gradle:- kotlinOptions { jvmTarget = "1.8" }
- Ajout d'une initialisation à la demande pour WorkManager, qui ne crée WorkManager que lorsqu'il est référencé.  b/127497100 Pour configurer l'initialisation à la demande pour votre projet :
- Désactivez l'initialiseur automatique.
- Implémentez Configuration.Providersur votre objetApplicationpersonnalisé.
- Remplacez toutes les références à WorkManager.getInstance()parWorkManager.getInstance(Context). Dans le cadre de changement, nous avons suppriméWorkManager.getInstance(). Il est toujours plus sûr d'appeler le nouveau remplacementWorkManager.getInstance(Context), même si vous n'effectuez pas d'initialisation à la demande.
 
- Les PeriodicWorkRequestsont désormais compatibles avec les délais initiaux. Vous pouvez utiliser la méthodesetInitialDelaysurPeriodicWorkRequest.Builderpour définir un délai initial. b/111404867
- Ajout de la possibilité de déléguer à un ou plusieurs WorkerFactoryenregistrés à l'aide deDelegatingWorkerFactory. b/131435993
- Ajout de la possibilité de personnaliser le Executorutilisé par WorkManager pour toutes les opérations de tenue de registres internes viaConfiguration.Builder.setTaskExecutor.
- Ajout de la possibilité de créer des classes WorkeretListenableWorkerpouvant être testées par unité en utilisantTestWorkerBuilderetTestListenableWorkerBuilderdans l'artefactwork-testing.- Notez que work-testingutilise désormais Kotlin en tant que dépendance et inclut plusieurs extensions Kotlin par défaut.
 
- Notez que 
- Ajout à WorkInfodu nombre de tentatives d'exécution. b/127290461
- Les types Datapeuvent désormais stocker et récupérer des octets et des tableaux d'octets. Cela ne modifie PAS la taille maximale des objetsData.
- WorkManager dépend désormais de Room 2.1.0, ce qui devrait résoudre certains problèmes liés à la base de données.
Version 2.1.0-rc01
27 juin 2019
Publication d'androidx.work:work-*:2.1.0-rc01.  Les commits inclus dans cette version sont disponibles sur cette page.
Correction de bugs
- Correction d'un bug qui provoquait le plantage de l'application lors de l'exécution de tâches avec JobScheduleralors qu'une sauvegarde était en cours. b/135858602.
Version 2.1.0-beta02
20 juin 2019
Publication d'androidx.work:work-*:2.1.0-beta02.  Les commits inclus dans cette version sont disponibles sur cette page.
Correction de bugs
- TestListenableWorkerBuilderutilise désormais le- WorkerFactoryapproprié lors de la création d'instances de- ListenableWorker. b/135275844
- Correction d'un bug qui entraînait des dérives dans les fenêtres d'exécution pour WorkRequesten raison de l'arrêt du processus. b/135272196
Version 2.1.0-beta01
13 juin 2019
Publication d'androidx.work:work-*:2.1.0-beta01.  Les commits inclus dans cette version sont disponibles sur cette page.
Correction de bugs
- WorkManager dépend désormais de Room 2.1.0, ce qui devrait résoudre certains problèmes liés à la base de données.
- Suppression de certaines entrées/sorties de disque de démarrage sur le thread principal.
- Blocage potentiel du suivi des contraintes. b/134361006
- Annulation des tâches non valides attribuées par erreur à WorkManager. b/134058261
- Ajout d'appels défensifs aux API JobScheduler pour les appareils défaillants.
Version 2.1.0-alpha03
5 juin 2019
Publication d'androidx.work:*:2.1.0-alpha03.
Correction de bugs
- Amélioration de la documentation sur les PeriodicWorkRequest.
- WorkManagerTestInitHelperutilise désormais l'exécuteur approprié pour les tests.
- Correction des problèmes liés à SQLite lors du traitement de transactions importantes sur certains appareils. (b/130182503)
- Les dépendances de WorkManager sont désormais plus précises. (b/133169148).
- Résolution des bugs spécifiques au fabricant OEM dans l'implémentation de JobSchedulerlors de la planification des tâches à l'aide de WorkManager.
- Améliorations apportées au planificateur basé sur AlarmManager concernant les durées de service qui entraînaient auparavant quelques rares plantages. (b/133313734)
Version 2.1.0-alpha02
16 mai 2019
Publication de la version 2.1.0-alpha02 de WorkManager. Cette version contient plusieurs nouvelles API.
Modifications apportées à l'API
- Les - PeriodicWorkRequestsont désormais compatibles avec les délais initiaux. Vous pouvez utiliser la méthode- setInitialDelaysur- PeriodicWorkRequest.Builderpour définir un délai initial. b/111404867
- Ajout de la possibilité de déléguer à un ou plusieurs - WorkerFactoryenregistrés à l'aide de- DelegatingWorkerFactory. b/131435993
- Ajout de la possibilité de personnaliser le - Executorutilisé par WorkManager pour toutes les opérations de tenue de registres internes via- Configuration.Builder.setTaskExecutor.
- Amélioration de la documentation concernant - WorkRequest.keepResultsForAtLeast(b/130638001), l'initialisation à la demande et- PeriodicWorkRequest.Builder(b/131711394).
Version 2.1.0-alpha01
24 avril 2019
Publication de la version 2.1.0-alpha01 de WorkManager. Cette version contient plusieurs nouvelles API. Notez qu'à partir de cette version, de nouvelles fonctionnalités ne seront pas rétroportées dans la version 1.x. Nous vous recommandons de passer à la version 2.x.
Modifications apportées à l'API
- Ajout d'une initialisation à la demande pour WorkManager, qui ne crée WorkManager que lorsqu'il est référencé.  b/127497100 Pour configurer l'initialisation à la demande pour votre projet :
- Désactivez l'initialiseur automatique.
- Implémentez Configuration.Providersur votre objetApplicationpersonnalisé.
- Remplacez toutes les références à WorkManager.getInstance()parWorkManager.getInstance(Context). Dans le cadre de changement, nous avons suppriméWorkManager.getInstance(). Il est toujours plus sûr d'appeler le nouveau remplacementWorkManager.getInstance(Context), même si vous n'effectuez pas d'initialisation à la demande.
 
- Ajout de la possibilité de créer des classes WorkeretListenableWorkerpouvant être testées par unité en utilisantTestWorkerBuilderetTestListenableWorkerBuilderdans l'artefactwork-testing.- Notez que work-testingutilise désormais Kotlin en tant que dépendance et inclut plusieurs extensions Kotlin par défaut.
 
- Notez que 
- Ajout à WorkInfodu nombre de tentatives d'exécution. b/127290461
- Les types Datapeuvent désormais stocker et récupérer des octets et des tableaux d'octets. Cela ne modifie PAS la taille maximale des objetsData.
- Abandon de CoroutineWorker.coroutineContext. Ce champ a été marqué commeCoroutineDispatcherpar erreur. Vous ne devriez plus en avoir besoin, car vous pouvez accéder vous-même au paramètre coroutineContext souhaité dans le corps de la fonction de suspension.
- RxWorker.createWork()et- RxWorker.getBackgroundScheduler()sont désormais annotés avec les types- @NonNullrenvoyés.
Version 2.0.1
Version 2.0.1
9 avril 2019
La version 2.0.1 de WorkManager est disponible. Cette version est identique à 2.0.1-rc01.
Version 2.0.1-rc01
3 avril 2019
Publication de la version 2.0.1-rc01 de WorkManager. Cette version contient des corrections de bugs. Pour les utilisateurs de l'ancienne version 1.x, certaines de ces modifications apparaissent également dans la version 1.0.1-rc01.
Correction de bugs
- Les tests Robolectric fonctionnent désormais correctement avec WorkManager. b/122553577
- Correction d'un cas particulier dans lequel le suivi des contraintes n'était pas nettoyé pour les APIs pré-JobScheduler. b/129226383
- Correction d'une erreur StackOverflowErrorliée aux longues chaînes de travail. b/129091233
- Mise à jour de la documentation sur les PeriodicWorkRequestpour indiquer que l'heure flexible n'est pas compatible avec l'API 23.
- Correction de certains liens non fonctionnels dans la documentation Kotlin.
Version 2.0.0
Version 2.0.0
20 mars 2019
Publication de la version 2.0.0 de WorkManager. Cette version est identique à la version 2.0.0-rc01 et correspond à la version AndroidX 1.0.0 stable comportant des dépendances AndroidX. Nous vous recommandons de cibler cette version plutôt que les anciennes versions 1.x. Tous les développements en cours cibleront les versions 2.x, et les versions 1.x ne recevront les corrections de bugs critiques que pendant une durée limitée.
Version 2.0.0-rc01
7 mars 2019
Publication de la version 2.0.0-rc01 de WorkManager. Cette version est identique à la version 1.0.0 stable, mais comporte des dépendances AndroidX. Une fois la version 2.0.0 stable, vous devez inclure cette version. Les anciennes versions 1.x ne recevront que certaines corrections de bugs critiques. Tous les développements en cours cibleront la version 2.x.
Dépendances antérieures à AndroidX
Documents de référence : Java
Groovy
dependencies { def work_version = "1.0.1" // (Java only) implementation "android.arch.work:work-runtime:$work_version" // Kotlin + coroutines implementation "android.arch.work:work-runtime-ktx:$work_version" // optional - RxJava2 support implementation "android.arch.work:work-rxjava2:$work_version" // optional - Test helpers androidTestImplementation "android.arch.work:work-testing:$work_version" }
Kotlin
dependencies { val work_version = "1.0.1" // (Java only) implementation("android.arch.work:work-runtime:$work_version") // Kotlin + coroutines implementation("android.arch.work:work-runtime-ktx:$work_version") // optional - RxJava2 support implementation("android.arch.work:work-rxjava2:$work_version") // optional - Test helpers androidTestImplementation("android.arch.work:work-testing:$work_version") }
Version 1.0.1
Version 1.0.1
9 avril 2019
La version 1.0.1 de WorkManager est disponible. Cette version est identique à 1.0.1-rc01.
Nous encourageons fortement les utilisateurs à effectuer la mise à jour vers WorkManager 2.x, car très peu de mises à jour de la branche 1.x seront désormais effectuées. Aucune nouvelle API ne sera publiée pour la bibliothèque 1.x.
Version 1.0.1-rc01
2 avril 2019
Publication de la version 1.0.1-rc01 de WorkManager. Cette version contient des corrections de bugs.
Correction de bugs
- Les tests Robolectric fonctionnent désormais correctement avec WorkManager. b/122553577
- Correction d'un cas particulier dans lequel le suivi des contraintes n'était pas nettoyé pour les APIs pré-JobScheduler. b/129226383
- Correction d'une erreur StackOverflowErrorliée aux longues chaînes de travail. b/129091233
Version 1.0.0
Version 1.0.0
5 mars 2019
Il s'agit de la version stable 1.0.0 de WorkManager. Cette version de WorkManager est identique à 1.0.0-rc02.
Version 1.0.0-rc02
21 février 2019
Il s'agit de la deuxième version finale pour la version stable de WorkManager 1.0.0. Cette version contient deux corrections de bugs.
Correction de bugs
- Les - Workersont désormais correctement planifiés après un plantage de l'application. b/124546316
- Les - Workerqui renvoient une- Exceptiondécochée sont maintenant correctement marqués comme- FAILEDet ne plantent plus le processus de l'application.
Version 1.0.0-rc01
14 février 2019
Il s'agit d'une version finale de la version stable de WorkManager 1.0.0. Cette version contient un correctif.
Correction de bugs
- L'implémentation basée sur AlarmManager respecte désormais correctement les fenêtres flexpour les PeriodicWorkRequests. b/124274584
Version 1.0.0-beta05
6 février 2019
Cette version contient des corrections de bugs.
Correction de bugs
- Correction d'un problème lié à l'utilisation de JobScheduler.getPendingJob(...)sur l'API 23. b/123893059
- Correction d'une NullPointerExceptionsur les appareils équipés d'Android 5.1 (niveau d'API 22) ou version antérieure. b/123835104
Version 1.0.0-beta04
4 février 2019
Cette version contient des corrections de bugs.
Correction de bugs
- Amélioration de la planification de PeriodicWork pour l'implémentation basée sur AlarmManager.
- Correction du problème suivant : WorkManager ne parvenait pas à suivre correctement les contraintes lors de l'utilisation de l'implémentation basée sur AlarmManager. b/123379508
- Correction d'un problème qui empêchait WorkManager de relancer la tâche lors de l'arrêt du processus lors de l'utilisation d'AlarmManager. b/123329850
- Correction d'un problème qui provoquait la fuite de wakelocks avec WorkManager lors de l'utilisation d'AlarmManager.
Version 1.0.0-beta03
25 janvier 2019
Cette version contient des corrections de bugs.
Correction de bugs
- Nous avons introduit une régression 1.0.0-beta02qui entraînait un dysfonctionnement d'une tâche dans certaines situations. b/123211993
- Correction d'un cas où la tâche ne respectait pas correctement l'intervalle entre les tentatives. b/122881597
- Correction d'une ConcurrentModificationExceptionsur les appareils équipés d'Android 5.1 (API ou version antérieure). Ceci fait suite au correctif de la version1.0.0-beta02. b/121345393
- Ajout de exported=falseà certains composants de notre fichier manifeste ne comportant pas cette annotation.
- Ajout d'informations sur l'interaction de WorkManager avec l'OS dans la documentation au niveau du package.
Version 1.0.0-beta02
15 janvier 2019
Cette version contient des corrections de bugs.
Correction de bugs
- Correction d'un cas extrême où le travail périodique pouvait s'exécuter plusieurs fois par intervalle sur des appareils équipés d'Android 6.0 (niveau d'API 23). b/121998363
- Correction d'une ConcurrentModificationExceptionsur les appareils équipés d'Android 5.1 (niveau d'API 22) ou version antérieure. b/121345393
- Correction de l'exécution erronée d'un travail qui se produisait lorsque les contraintes n'étaient pas respectées sur les appareils équipés d'Android 5.1 (niveau d'API 22) ou version antérieure. b/122578012
- Optimisation de la gestion de l'achèvement du travail pour accélérer le processus dans certains cas extrêmes. b/122358129
- Modification permettant de répondre aux conditions de concurrence potentielles dans plusieurs instances de LiveDatautilisées par WorkManager.
- Adoption de la dépendance 1.1.1deRoomau lieu de1.1.1-rc01. Ces versions sont identiques. b/122578011
Version 1.0.0-beta01
19 décembre 2018
Cette version ne contient aucune modification de l'API. À l'avenir, WorkManager devrait conserver l'API stable jusqu'à la prochaine version, sauf en cas de problème critique. Cette version contient des corrections de bugs.
Correction de bugs
- Les enfants précédemment annulés des travaux parents terminés ne seront plus exécutés. b/120811767
- Classes de journalisation correctement initialisées (principalement exposées lors des tests).
Version 1.0.0-alpha13
12 décembre 2018
Cette version contient une modification mineure de l'API qui sera utile pour certains utilisateurs de Kotlin.
Modifications apportées à l'API
- androidx.work.Resulta été déplacé vers une classe interne de- ListenableWorker. Cela permet d'éviter les conflits de refactorisation avec la classe- Resultde niveau supérieur de Kotlin. Il s'agit d'une modification destructive de l'API. b/120564418
Modifications destructives de l'API
- androidx.work.Resulta été déplacé vers une classe interne de- ListenableWorker.
Version 1.0.0-alpha12
5 décembre 2018
Cette version contient des modifications destructives apportées à l'API. Veuillez consulter la section Modifications destructives de l'API ci-dessous.  Cette version sera probablement notre première version bêta.  La version alpha12 contient également des mises à jour importantes de la documentation.
Modifications apportées à l'API
- Un nouvel artefact, work-rxjava2, introduitRxWorker. Il s'agit d'unListenableWorkerqui attend uneSingle<Payload>.
- Suppression de la compatibilité avec Firebase JobDispatcher en raison de son abandon imminent.  Par conséquent, l'artefact work-firebasene sera plus mis à jour lorsque nous passerons à la version bêta. Nous envisageons d'ajouter une alternative à l'avenir.
- Intégration de PayloadàResult.Resultest désormais une "classe scellée" avec trois implémentations concrètes, que vous pouvez obtenir viaResult.success()(ouResult.success(Data)),Result.failure()(ouResult.failure(Data)) etResult.retry(). VosListenableFuturegénèrent désormais unResultau lieu d'unePayload. LesWorkern'ont pas de méthodes "getter" et "setter" pour lesDatade sortie. Il s'agit d'une modification destructive.
- Ajout de Constraints.Builder.setTriggerContentMaxDelay(long, TimeUnit), deConstraints.Builder.setTriggerContentUpdateDelay(long, TimeUnit)et de variantes pour permettre une meilleure compatibilité avec les URI de contenu à déclenchement lent. b/119919774
- Ajout de la variante WorkRequest.Builder.setBackoffCriteria(BackoffPolicy, Duration). Cette méthode nécessite le niveau d'API 26.
- Ajout des méthodes d'extension Kotlin Operation.await()etListenableFuture.await().
- Changement de nom : Operation.getException()devientOperation.getThrowable(). Il s'agit d'une modification destructive.
- La classe ContentUriTriggerset les méthodes qui y font référence ne sont plus disponibles pour une utilisation publique. Il s'agit d'une modification destructive.
- Suppression des autres méthodes de varargs dans WorkManager,WorkContinuationetOneTimeWorkRequestafin de simplifier l'API. Vous pouvez encapsuler vos varargs existants avecArrays.asList(...)pour corriger les problèmes de compilation. Nous incluons toujours les versions à argument unique de chaque méthode. Il s'agit d'une modification destructive.
- Suppression des variantes WorkContinuation.combine(OneTimeWorkRequest, *). Elles présentaient une API qui prêtait à confusion. Les méthodescombineexistantes sont plus faciles à comprendre. Il s'agit d'une modification destructive.
Correction de bugs
- Les implémentations antérieures à Marshmallow sont désormais plus fiables lors de la récupération de la fin du processus d'une tâche déjà en cours d'exécution.
- LiveDataest observé par- observeForeveret suivi par WorkManager. Il s'agit d'un rétroportage d'une correction de la bibliothèque Room. b/74477406
- Data.Builder.build()génère désormais une exception si l'objet sérialisé dépasse sa taille maximale. Auparavant, cette opération ne se produisait que sur un thread d'arrière-plan qui empêchait une gestion correcte.
- Plus grande distinction entre les travaux arrêtés et annulés. getWorkInfoById()renvoieWorkInfoavec leStateCANCELLEDpendantListenableWorker.onStopped().
- Traitement des Resultnullcomme des échecs dansListenableWorker. b/120362353
- Correction potentielle pour les tablettes Shield exécutant le niveau d'API 24, qui génère parfois une IllegalArgumentException. b/119484416
Modifications destructives de l'API
- Suppression de la compatibilité avec Firebase JobDispatcher en raison de son abandon imminent.  Par conséquent, l'artefact work-firebasene sera plus mis à jour lorsque nous passerons à la version bêta. Nous envisageons d'ajouter une alternative à l'avenir.
- Intégration de PayloadàResult.Resultest désormais une "classe scellée" avec trois implémentations concrètes, que vous pouvez obtenir viaResult.success()(ouResult.success(Data)),Result.failure()(ouResult.failure(Data)) etResult.retry(). VosListenableFuturegénèrent désormais unResultau lieu d'unePayload. LesWorkern'ont pas de méthodes "getter" et "setter" pour lesDatade sortie.
- Ajout des méthodes d'extension Kotlin Operation.await()etListenableFuture.await().
- Changement de nom : Operation.getException()devientOperation.getThrowable().
- La classe ContentUriTriggerset les méthodes qui y font référence ne sont plus disponibles pour une utilisation publique.
- Suppression des autres méthodes de varargs dans WorkManager,WorkContinuationetOneTimeWorkRequestafin de simplifier l'API. Vous pouvez encapsuler vos varargs existants avecArrays.asList(...)pour corriger les problèmes de compilation. Nous incluons toujours les versions à argument unique de chaque méthode.
- Suppression des variantes WorkContinuation.combine(OneTimeWorkRequest, *). Elles présentaient une API qui prêtait à confusion. Les méthodescombineexistantes sont plus faciles à comprendre.
Version 1.0.0-alpha11
8 novembre 2018
Cette version contient de nombreuses modifications qui permettront d'obtenir une API stable en version beta.
Cette version comprend des modifications destructives apportées à l'API. Veuillez consulter la section Modifications destructives de l'API ci-dessous.
Modifications apportées à l'API
- work-runtime-ktxintroduit un nouveau- CoroutineWorker.
- WorkStatusa été renommé- WorkInfo. Toutes les variantes correspondantes de la méthode- getStatusont été renommées en variantes correspondantes de- getWorkInfo. Il s'agit d'une modification destructive.
- ListenableWorker.onStopped()n'accepte plus l'argument booléen indiquant si- WorkRequesta été annulé.- WorkManagerne fait plus cette distinction. Il s'agit d'une modification destructive.
- Le package androidx.work.testa été renomméandroidx.work.testing. Il s'agit d'une modification destructive.
- Les méthodes "setter" de Constraintsne font plus partie de l'API publique. Il s'agit d'une modification destructive.
- Auparavant, WorkerParameters.getTriggeredContentUris()etWorkerParameters.getTriggeredContentAuthorities()renvoyaient des tableaux. Ces méthodes renvoient maintenant des collections. Il s'agit d'une modification destructive.
- ListenableWorker.onStartWork()a été renommé- ListenableWorker.startWork(). Il s'agit d'une modification destructive.
- Le constructeur de WorkStatusne fait plus partie de l'API publique. Il s'agit d'une modification destructive.
- Configuration.getMaxJobSchedulerID()et- Configuration.getMinJobSchedulerID()sont renommés- Configuration.getMinJobSchedulerId()et- Configuration.getMaxJobSchedulerId(), respectivement. Il s'agit d'une modification destructive.
- Ajout de nombreuses annotations @NonNullà l'API publique pour améliorer son ergonomie.
- Ajout de l'API WorkManager.enqueueUniqueWork()pour placer desOneTimeWorkRequestuniques en file d'attente sans avoir à créer deWorkContinuation.
- Toutes les variantes des méthodes enqueueetcancelsurWorkManagerrenvoient désormais un nouveau typeOperation. Il s'agit d'une modification destructive.
- Toutes les variantes de enqueuen'acceptent plus les varargs pourWorkRequest. Il s'agit d'une modification destructive. Utilisez plutôt des collections. Vous pouvez utiliserArrays.asList()pour modifier le code existant. Nous avons apporté cette modification pour réduire le nombre de méthodes et la surface de l'API.
- Désormais, les tentatives de initializeWorkManagerrépétées plus d'une fois par processus entraîneront uneIllegalStateException. Il s'agit d'une modification destructive.
Correction de bugs
- Les WorkRequest.Builderde l'artefactwork-runtime-ktxutilisent désormais desListenableWorker. Corrections b/117666259
- Assurez-vous que la prochaine exécution de PeriodicWorkse déroule dans le futur. Corrections b/118204399
- Suppression des E/S de disque potentielles lors de l'utilisation de WorkManager au démarrage de l'application. Corrections b/117796731
- Correction d'une condition de concurrence dans WorkConstraintsTracker. Corrections android-workmanager/issues/56
Modifications destructives de l'API
- WorkStatusa été renommé- WorkInfo. Toutes les variantes correspondantes de la méthode- getStatusont été renommées en variantes correspondantes de- getWorkInfo.
- ListenableWorker.onStopped()n'accepte plus l'argument booléen indiquant si- WorkRequesta été annulé.- WorkManagerne fait plus cette distinction.
- Le package androidx.work.testa été renomméandroidx.work.testing.
- Les méthodes "setter" de Constraintsne font plus partie de l'API publique.
- Auparavant, WorkerParameters.getTriggeredContentUris()etWorkerParameters.getTriggeredContentAuthorities()renvoyaient des tableaux. Ces méthodes renvoient maintenant des collections.
- ListenableWorker.onStartWork()a été renommé- ListenableWorker.startWork().
- Le constructeur de WorkStatusne fait plus partie de l'API publique.
- Configuration.getMaxJobSchedulerID()et- Configuration.getMinJobSchedulerID()sont renommés- Configuration.getMinJobSchedulerId()et- Configuration.getMaxJobSchedulerId(), respectivement.
- Toutes les variantes des méthodes enqueueetcancelsurWorkManagerrenvoient désormais un nouveau type d'Operation.
- Toutes les variantes de enqueuen'acceptent plus les varargs pourWorkRequest.
- Désormais, les tentatives de initializeWorkManagerrépétées plus d'une fois par processus entraîneront uneIllegalStateException.
Version 1.0.0-alpha10
11 octobre 2018
Cette version prend en charge le travail asynchrone contrôlé par les développeurs. Cette version comprend des modifications destructives apportées à l'API. Veuillez consulter la section Modifications destructives de l'API ci-dessous.
Nous pensons que WorkManager entre dans les phases finales de sa période alpha. La version bêta devrait être stable au niveau de l'API. Nous vous invitons donc à nous faire part de vos commentaires sur notre Issue Tracker.
Modifications apportées à l'API
- Suppression de toutes les classes et méthodes précédemment deprecated, en particulier le constructeurWorkerpar défaut. Il s'agit d'une modification destructive de l'API.
- NonBlockingWorkera été renommé- ListenableWorker, qui est maintenant une classe publique non masquée et prête à l'emploi.- ListenableWorkerpermet d'accéder à une méthode abstraite,- ListenableFuture<Payload> onStartWork(), qui est appelée sur le thread principal. Il vous appartient de commencer et de traiter le travail de manière asynchrone. Lorsque vous avez terminé, mettez à jour le- ListenableFuturede manière appropriée. Les implémentations de référence des- ListenableFuturesont fournies dans le package- Futuresde la version- alpha02(voir la section- WorkManagerci-dessous).
- Workerétend- ListenableWorkeret fonctionne comme avant, avec une méthode- Result doWork()abstraite.
- Passage de certaines méthodes et de certains membres de WorkeràListenableWorker.
- Nous fournirons bientôt des implémentations de référence pour les ListenableWorkerutilisant des coroutines Kotlin (une fois les versions stables publiées) et RxJava2.
 
- L'interface WorkerFactoryet l'implémentation concrèteDefaultWorkerFactoryont été fusionnées dans une classe abstraite appeléeWorkerFactory. L'implémentation garantit que le comportement par défaut basé sur la réflexion est appelé en dernier recours pour toutes les instancesWorkerFactorycréées par l'utilisateur. Il s'agit d'une modification destructive.
- Suppression de WorkManager.synchronous(), deWorkContinuation.synchronous()et de toutes les méthodes associées. Ajout deListenableFuture<Void>comme type renvoyé de nombreuses méthodes dans l'API. Il s'agit d'une modification destructive de l'API.- Vous pouvez désormais utiliser ListenableFuturepour obtenir et observer de manière synchrone. Par exemple,WorkManager.enqueue()permet de renvoyervoid. Il renvoie désormais unListenableFuture<Void>. Une fois l'opération terminée, vous pouvez appelerListenableFuture.addListener(Runnable, Executor)ouListenableFuture.get()pour exécuter le code.
- Notez que ces ListenableFuturene vous indiquent pas la réussite ou l'échec de l'opération, mais seulement qu'elle est terminée. Vous devrez toujours associer les méthodes WorkManager pour obtenir ces informations.
- Nous ignorons les appels cancel()sur ces objets, car ils sont source de confusion et difficiles à justifier (vous annulez l'opération ou son résultat ?). Cela est prévu dans le contratFuture.
- Pour conserver la parité avec les méthodes getStatus*synchrones, nous avons fourni des variantesListenableFutureet renommé les méthodes existantes renvoyantLiveDataafin d'inclure explicitement "LiveData" dans le nom (par exemple,getStatusesByIdLiveData(UUID)). Il s'agit d'une modification destructive de l'API.
 
- Vous pouvez désormais utiliser 
Correction de bugs
- Correction du problème connu de la version alpha09 concernant les fichiers androidx-annotations.proen double. Vous pouvez supprimer la solution de contournement des notes de version précédentes en supprimantexclude 'META-INF/proguard/androidx-annotations.pro'de votre fichier Gradle.
- Ajout de configurations ProGuard pour conserver le nouveau constructeur Worker. b/116296569
- Correction d'une NullPointerExceptionpotentielle dans une condition de concurrence où le travail étaitREPLACE. b/116253486 et b/116677275
- WorkContinuation.combine()accepte désormais une ou plusieurs- WorkContinuationau lieu de deux ou plus. b/117266752
Modifications destructives de l'API
- Suppression de toutes les classes et méthodes précédemment deprecated, en particulier le constructeurWorkerpar défaut.
- L'interface WorkerFactoryet l'implémentation concrèteDefaultWorkerFactoryont été fusionnées dans une classe abstraite appeléeWorkerFactory.
- Suppression de WorkManager.synchronous()et deWorkContinuation.synchronous().
- Les méthodes WorkManager.getStatus*()renvoient désormaisListenableFuture.WorkManager.getStatus*LiveData()renvoieLiveData.
Version 1.0.0-alpha09
19 septembre 2018
Problème connu
Si le problème suivant s'affiche : "Plusieurs fichiers ayant le chemin d'accès indépendant 'META-INF/proguard/androidx-annotations.pro' ont été trouvés dans le système d'exploitation", veuillez utiliser la solution de contournement temporaire suivante dans votre fichier Gradle pendant que nous corrigeons le problème dans la version alpha10 :
Groovy
android { packagingOptions { exclude 'META-INF/proguard/androidx-annotations.pro' } }
Kotlin
android { packagingOptions { exclude("META-INF/proguard/androidx-annotations.pro") } }
Correction de bugs
- Ajout d'une autre correction nécessaire pour l'erreur "100 tâches". b/115560696
- Ajout de corrections pour les erreurs de contraintes de clés étrangères en raison des conditions de concurrence. b/114705286
- Délégation des appels ConstraintTrackingWorker.onStopped(boolean)auWorkersous-jacent. b/114125093
- Application d'un délai minimal correct d'intervalle entre les tentatives pour Firebase JobDispatcher. b/113304626
- Amélioration des garanties de threads internes de la bibliothèque.
- Correction de problèmes potentiels d'élimination des doublons de LiveDataen interne.
Modifications apportées à l'API
- Vous pouvez maintenant créer vos propres instances Workerau moment de l'exécution en spécifiant uneWorkerFactorydans leWorkManager.Configuration. La fabrique de remplacement estDefaultWorkerFactory, ce qui correspond au comportement des versions précédentes de WorkManager.- Les constructeurs par défaut pour WorkeretNonBlockingWorkersont désormais marqués comme obsolètes. Veuillez utiliser le nouveau constructeur (Worker(Context, WorkerParameters)) et appelersuper(Context, WorkerParameters). Les futures versions de WorkManager supprimeront le constructeur par défaut.
 
- Les constructeurs par défaut pour 
- Nous avons commencé à utiliser le nouvel artefact ListenableFutureen interne (sans dépendances Guava). Nous intégrerons "ListenableFutures" à l'API dans les prochaines versions. Cette modification permettra l'affichage final deNonBlockingWorker.
- Ajout de la possibilité de déclencher des travaux programmés dans TestDriverviaTestDriver.setInitialDelayMet(UUID)etTestDriver.setPeriodDelayMet(UUID). b/113360060
Modifications destructives
- Les constructeurs WorkeretNonBlockingWorkerpar défaut sont obsolètes. Veuillez migrer vers le nouveau constructeur dès que possible. Les futures versions supprimeront le constructeur par défaut.
Version 1.0.0-alpha08
27 août 2018
Correction de bugs
- Les composants de WorkManager sont explicitement libellés comme étant incompatibles avec le démarrage direct. Ils ne se déclenchent donc pas pendant le démarrage direct. À l'avenir, nous fournirons une version de WorkManager compatible avec le démarrage direct. b/112665532
- Correction d'un problème empêchant l'exécution de nouvelles tentatives. b/112604021
- Correction du problème empêchant l'exécution répétée du travail périodique (lié au problème ci-dessus). b/112859683
- Respect des règles d'intervalle entre les tentatives lorsque le processus de l'application est déjà en cours d'exécution.
- Correction des messages d'exception dans Datapour indiquer que la limite correspond à 10 Ko.
- Diminution de la valeur maximale de Configuration.setMaxSchedulerLimit(int)à 50 pour tenir compte de la latence pendant le traitement deJobScheduler. b/112817355
Version 1.0.0-alpha07
16 août 2018
Correction de bugs
- Correction d'une potentielle requête SQL avec des limites négatives pouvant renvoyer un nombre illimité de résultats.
- Désormais, un travail dont l'exécution est terminée annule correctement toutes les copies en attente de ce travail dans d'autres planificateurs. Cela a entraîné le dépassement de la limite de tâches de JobScheduler. b/111569265
- Correction d'une ConcurrentModificationExceptiondansConstraintTracker. b/112272753
- Remplacement des annotations du type renvoyé de Data.getBooleanArray(String)etData.getIntArray(String)par@Nullableau lieu de@NonNull. b/112275229
Modifications apportées à l'API
- Workerétend désormais une nouvelle classe,- NonBlockingWorker. Cela n'affecte pas l'utilisation actuelle. À l'avenir,- NonBlockingWorkerdeviendra une entité entièrement compatible avec les solutions de threads personnalisés.
- Remplacement des annotations du type renvoyé de Data.getBooleanArray(String)etData.getIntArray(String)par@Nullableau lieu de@NonNull. b/112275229
- Extensions de Kotlin : abandon de Map.toWorkData()et ajout d'unworkDataOf(vararg Pair<String, Any?>)de niveau supérieur pour plus de cohérence avec les API existantes.
Version 1.0.0-alpha06
1er août 2018
Correction de bugs
- Prévention du verrouillage des bases de données lors de la programmation du travail. b/111801342
- Correction d'un bug empêchant PeriodicWorkde s'exécuter comme programmé en mode Sommeil. b/111469837
- Correction d'une condition de concurrence lors du suivi des contraintes entraînant le plantage de WorkManager. googlecodelabs/android-workmanager/issues/56
- Création de WorkRequestuniques lors de l'utilisation deWorkRequest.Builder#build(). b/111408337
- Activation de l'utilisation de RescheduleReceiveruniquement lorsque nécessaire pour lesWorkRequest. b/111765853
Version 1.0.0-alpha05
24 juillet 2018
Modifications apportées à l'API
- WorkManager.getInstance()est désormais annoté avec- @NonNullau lieu de- @Nullable. En revanche, si le Singleton n'est pas correctement initialisé en cas d'initialisation manuelle, la méthode renvoie une- IllegalStateException. Il s'agit d'une modification destructive de l'API.
- Ajout d'une nouvelle API, Configuration.Builder.setMinimumLoggingLevel(int), qui permet de contrôler le niveau de verbosité de WorkManager. Par défaut, WorkManager enregistreLog.INFOet les versions ultérieures.
- Modification de la signature de Data.getString()pour qu'elle ne prenne plus de valeur par défaut (implicitementnull). Il s'agit d'une modification destructive de l'API.
- Marquage de certaines méthodes comme uniquement réservées à une utilisation interne comme @hide. Cela inclut le constructeurConstraints,Data.toByteArray()etData.fromByteArray(byte[]). Il s'agit d'une modification destructive de l'API.
Correction de bugs
- WorkManager n'exécute plus le travail dans les cas connus de sauvegarde automatique. Cela pourrait provoquer un plantage. b/110564377
- Correction de la double programmation de PeriodicWorkRequestlors de l'utilisation deJobScheduler. b/110798652
- Correction d'un problème avec les PeriodicWorkRequestqui ne s'exécutent pas correctement après l'activation de la fonction Sommeil sur l'appareil. b/111469837
- Correction d'un problème avec les retards initiaux lors de l'utilisation de Firebase JobDispatcher. b/111141023
- Correction de certains problèmes temporels et de conditions de concurrence potentiels.
- Libération correcte de BroadcastReceiverdevenus inutiles.
- Optimisation des performances de la reprogrammation lors du redémarrage des applications après une fermeture forcée.
- Autorisation de l'appel de TestScheduler.setAllConstraintsMet(UUID)avant ou après la mise en file d'attente de laWorkRequestdonnée. b/111238024
Modifications destructives
- WorkManager.getInstance()est désormais annoté avec- @NonNullau lieu de- @Nullable.
- Modification de la signature de Data.getString()pour qu'elle ne prenne plus de valeur par défaut (implicitementnull).
- Marquage de certaines méthodes comme uniquement réservées à une utilisation interne comme @hide. Cela inclut le constructeurConstraints,Data.toByteArray()etData.fromByteArray(byte[]).
Version 1.0.0-alpha04
26 juin 2018
Correction de bugs
- Les PeriodicWorkRequestsont désormais correctement reprogrammés lorsque vous utilisez l'implémentation basée surAlarmManager.
- Correction d'une erreur ANR potentielle lors de la reprogrammation de tous les nœuds de calcul après un arrêt forcé ou un redémarrage. b/110507716
- Ajout d'annotations de possibilité de valeur nulle à différentes API WorkManager. b/110344065
- Journalisation des exceptions non détectées pendant l'exécution du nœud de calcul. b/109900862
- Autorisation des migrations de bases de données destructives si vous décidez d'effectuer un rollback vers une ancienne version de WorkManager. b/74633270
- Correction d'un problème de migration en cas de création de balises implicites en double. Il s'agit d'un problème très rare qui ne se produit que si vous utilisez vous-même le même format de balise implicite.
Version 1.0.0-alpha03
19 juin 2018
Correction de bugs
- Correction d'une condition de concurrence dans l'implémentation basée sur - AlarmManager. b/80346526
- Correction des tâches en double lors de l'utilisation de - JobScheduleraprès un redémarrage de l'appareil.
- Les tâches comportant des déclencheurs d'URI de contenu sont maintenant conservées lors des redémarrages. b/80234744 
- Mises à jour de la documentation. b/109827628, b/109758949, b/80230748 
- Correction d'un plantage lors de la nouvelle mise en file d'attente d'une - WorkRequest. b/109572353
- Correction des avertissements du compilateur Kotlin lors de l'utilisation de la dépendance - work-runtime-ktx.
- WorkManager utilise désormais la version - 1.1.1-rc1de- Room.
Modifications apportées à l'API
- Ajout de getStatusesSync(), la version synchrone deWorkContinuation.getStatuses().
- Workerpermet de faire la distinction entre l'annulation déclenchée par l'utilisateur et l'arrêt temporaire demandé par l'OS.- Worker.isStopped()renvoie- truesi un type d'arrêt a été demandé.- Worker.isCancelled()renvoie- truelorsque le travail a été explicitement annulé. b/79632247
- Ajout de la prise en charge de JobParameters#getNetwork() dans le niveau d'API 28. Cela est exposé via Worker.getNetwork().
- Ajout de Configuration.Builder.setMaxSchedulerLimit(int maxSchedulerLimit)afin que vous puissiez forcer le nombre de tâches pouvant être envoyées àJobSchedulerouAlarmManager. Cela permet d'éviter queWorkManagern'occupe tous les emplacements disponibles deJobScheduler.
- Ajout de Configuration.setJobSchedulerJobIdRange(int minJobSchedulerId, int maxJobSchedulerId), qui permet de définir une plage d'ID de tâchesJobSchedulerqueWorkManagerpeut utiliser de manière sûre. b/79996760
- Worker.getRunAttemptCount()renvoie le nombre d'exécutions actuel pour un- Workerdonné. b/79716516
- WorkManager.enqueueUniquePeriodicWork(String uniqueWorkName, ExistingPeriodicWorkPolicy existingPeriodicWorkPolicy, PeriodicWorkRequest periodicWork)vous permet de placer des- PeriodicWorkRequestuniques en file d'attente. b/79600647
- WorkManager.cancelAllWork()annule tous les- Worker. Les bibliothèques qui dépendent de- WorkManagerpeuvent vérifier quand cette méthode a été appelée pour la dernière fois en utilisant- WorkManager.getLastCancelAllTimeMillis()pour nettoyer davantage l'état interne.
- Ajout de WorkManager.pruneWork()pour supprimer les tâches terminées de la base de données interne. b/79950952, b/109710758
Nouveaux comportements
- Ajout d'une balise implicite pour tous les WorkRequest, qui correspond au nom de classe complet duWorker. Cela permet de supprimer desWorkRequestsanstagou lorsque l'idn'est pas disponible. b/109572351
Modifications destructives
- Changement de nom : Worker.WorkerResultdevientWorker.Result.
- Worker.onStoppedcomporte désormais un paramètre- isCancelledsupplémentaire défini sur- truelorsque le- Workera été explicitement annulé.
Version 1.0.0-alpha02
24 mai 2018
Correction de bugs
- Correction d'une NullPointerExceptiondansState.isFinished(). b/79550068
- Correction d'un problème provoquant la reprogrammation de WorkerdansApplication.onCreate(). b/79660657
- Correction d'un problème qui entraînait la programmation d'une quantité de travail supérieure à celle autorisée par le système d'exploitation. b/79497378
- Déplacement du nettoyage des "wakelocks" associés à Workervers le thread d'arrière-plan.
- L'implémentation de AlarmManagerest désormais correctement nettoyée une fois le travail en attente terminé.
- Correction des requêtes SQL de nettoyage affectant les langues autres que l'anglais. b/80065360
- Ajout de la prise en charge des floatdansData. b/79443878
- Data.Builder.putAll()renvoie maintenant une instance de- Builder. b/79699162
- Documentation contenant davantage de Javadoc et de corrections. b/79691663
Modifications apportées à l'API
- Les Workerpeuvent réagir à un arrêt.Worker.isStopped()permet de vérifier si unWorkera été arrêté.Worker.onStopped()peut être utilisé pour effectuer des opérations de nettoyage légères.
- L'API Worker.getTags()renvoie unSetde balises associées auWorker.
- Ajout de surcharges javax.time.Durationpour les API qui combinent une durée et desTimeUnit. Cela est protégé par@RequiresApi(26).
- Déplacement des extensions WorkManagerdu packageandroidx.work.ktxvers le packageandroidx.work. Abandon et suppression des anciennes extensions dans une prochaine version.
- Abandon de Configuration.withExecutor(). UtilisezConfiguration.setExecutor()à la place.
Version 1.0.0-alpha01
8 mai 2018
WorkManager simplifie la programmation et l'exécution du travail en arrière-plan garanti et compatible avec les contraintes. Cette version initiale est la version 1.0.0-alpha01.
