Articles

Planifier des tâches avec WorkManager Fait partie d’Android Jetpack.

WorkManager est une API qui facilite la planification de tâches différées et asynchrones qui sont censées s’exécuter même si l’application quitte ou si l’appareil redémarre. L’API WorkManager est un remplacement approprié et recommandé pour toutes les API de planification d’arrière-plan Android précédentes, notamment FirebaseJobDispatcher, GcmNetworkManager et Job Scheduler. WorkManagerincorpore les fonctionnalités de ses prédécesseurs dans une API moderne et cohérente qui revient au niveau 14 de l’API tout en étant conscient de l’autonomie de la batterie.

Sous le capot, WorkManager utilise un service sous-jacent de répartition des tâches basé sur les critères suivants :

If the device is running on API Level 23 or higher, JobScheduler is used. OnAPI Levels 14-22, GcmNetworkManager is chosen if it's available, otherwise, acustom AlarmManager and BroadcastReciever implementation is used as afallback.

Note : si votre application cible Android 10 (niveau 29 de l’API) ou plus, vos appels APIFirebaseJobDispatcher et GcmNetworkManager ne fonctionneront plus sur les appareils fonctionnant sous Android Marshmallow (6.0) et plus. Suivez les guides de migration de FirebaseJobDispatcher et GcmNetworkManager pour obtenir des conseils sur la migration. Consultez également l’annonce Unifying Background Task Scheduling onAndroid pour plus d’informations concernant leur dépréciation.

Caractéristiques

En plus de fournir une API plus simple et cohérente, WorkManager présente un certain nombre d’autres avantages clés, notamment :

Contraintes de travail

Définissez de manière déclarative les conditions optimales d’exécution de votre travail à l’aide de WorkConstraints.(Par exemple, exécuter uniquement lorsque l’appareil est Wi-Fi, lorsque l’appareil est inactif, ou lorsqu’il dispose d’un espace de stockage suffisant, etc.)

Planification robuste

WorkManager vous permet de planifier le travail pour qu’il s’exécute une fois ou de manière répétée en utilisant des fenêtres de planification flexibles. Les travaux peuvent également être étiquetés et nommés, ce qui vous permet de programmer des travaux uniques et remplaçables et de surveiller ou d’annuler des groupes de travaux ensemble. Le travail programmé est stocké dans une base de données SQLite gérée en interne et WorkManager s’assure que ce travail persiste et est reprogrammé lors des redémarrages du dispositif. En outre, WorkManager adhère aux fonctionnalités d’économie d’énergie et aux meilleures pratiques comme le mode Doze,afin que vous n’ayez pas à vous en préoccuper.

Politique de reprise flexible

Il arrive que le travail échoue. WorkManager offre des politiques de relance flexibles,y compris une politique de recul exponentiel configurable.

Chaînage de travaux

Pour des travaux connexes complexes, enchaînez des tâches de travail individuelles à l’aide d’une interface fluide et naturelle qui vous permet de contrôler les pièces qui s’exécutent séquentiellement et celles qui s’exécutent en parallèle.

Kotlin

WorkManager.getInstance(...) .beginWith(listOf(workA,workB)) .then(workC) .enqueue()

Java

WorkManager.getInstance(...) .beginWith(Arrays.asList(workA, workB)) .then(workC) .enqueue();

Pour chaque tâche de travail, vous pouvez définir des données d’entrée et de sortie pour ce travail. Lorsque vous enchaînez des travaux, WorkManager transmet automatiquement les données de sortie d’une tâche de travail à la suivante.

Intégration de l’interopérabilité du Threading

WorkManager s’intègre sans problème avecRxJava etCoroutineset offre la flexibilité nécessaire pour brancher vos propres API asynchrones.

Utiliser WorkManager pour les travaux reportables et fiables

WorkManager est destiné aux travaux reportables-c’est-à-dire qui ne doivent pas s’exécuter immédiatement-et qui doivent s’exécuter de manière fiable même si l’app quitte ou si l’appareil redémarre. Par exemple :

  • Envoyer des journaux ou des analyses à des services dorsaux
  • Synchroniser périodiquement les données de l’application avec un serveur

WorkManager n’est pas destiné au travail d’arrière-plan en cours de traitement qui peut être terminé en toute sécurité si le processus de l’app disparaît ou au travail qui nécessite une exécution immédiate. Veuillez consulter le guide du traitement en arrière-plan pour voir quelle solution répond à vos besoins.

Mise en route

Voyez le guide de mise en route pour commencer à utiliserWorkManager dans votre app.