WorkManager pour Kotlin : guide complet avec exemples

Formateur Python en ligne pour débutants

Apprenez Python facilement sans surcharge théorique. Résolvez des tâches pratiques avec vérification automatique et écrivez du code directement dans le navigateur.

Start Course

Introduction à WorkManager pour Kotlin

WorkManager est une bibliothèque de Google pour Android, conçue pour exécuter des tâches en arrière-plan qui doivent être garanties, même en cas de redémarrage de l'appareil ou de fermeture de l'application. Elle fait partie d'Android Jetpack et fournit une API simple et fiable pour planifier des tâches différées, périodiques ou uniques.

L'objectif principal de WorkManager est de remplacer les anciens mécanismes de travail en arrière-plan, comme Service ou AsyncTask, et d'assurer la compatibilité avec différentes versions d'Android (à partir de l'API 14+). La bibliothèque choisit automatiquement la meilleure méthode d'exécution : JobScheduler (API 23+), AlarmManager + BroadcastReceiver (versions plus anciennes) ou Firebase JobDispatcher (si intégré).

WorkManager est idéal pour des scénarios tels que : la synchronisation de données avec un serveur, l'envoi d'analyses, le téléchargement de fichiers, le traitement d'images, la sauvegarde, l'envoi de notifications push et toute autre tâche qui ne nécessite pas une exécution immédiate mais doit être terminée prochainement.

Installation de WorkManager

WorkManager ne s'installe pas via pip ou npm, car il s'agit d'une bibliothèque Android (Kotlin/Java). Pour l'ajouter à votre projet, vous devez modifier le fichier build.gradle (au niveau du module).

Étape 1 : Ouvrez le fichier build.gradle de votre module (app/build.gradle).

Étape 2 : Ajoutez la dépendance dans le bloc dependencies :

dependencies {
    implementation "androidx.work:work-runtime-ktx:2.9.0"
}

Étape 3 : Synchronisez le projet (Sync Now).

Si vous utilisez Kotlin DSL, la dépendance ressemblera à ceci :

dependencies {
    implementation("androidx.work:work-runtime-ktx:2.9.0")
}

Important : La version 2.9.0 est la version actuelle au moment de la rédaction de cet article. Il est recommandé de vérifier la dernière version sur le site officiel d'Android Developers.

Démarrage rapide avec un exemple de code

Prenons un exemple simple : créons une tâche en arrière-plan qui affiche un log dans Logcat.

Étape 1 : Créez la classe Worker

import android.content.Context
import android.util.Log
import androidx.work.Worker
import androidx.work.WorkerParameters

class SimpleWorker(context: Context, params: WorkerParameters) : Worker(context, params) {

    override fun doWork(): Result {
        Log.d("SimpleWorker", "Tâche en arrière-plan exécutée !")
        // Vous pouvez effectuer ici toute opération longue
        return Result.success()
    }
}

Étape 2 : Planifiez l'exécution de la tâche

import androidx.work.OneTimeWorkRequestBuilder
import androidx.work.WorkManager

val workRequest = OneTimeWorkRequestBuilder<SimpleWorker>()
    .build()

WorkManager.getInstance(context).enqueue(workRequest)

Après avoir appelé enqueue(), la tâche sera exécutée prochainement (généralement en quelques secondes, s'il n'y a pas de contraintes).

Méthodes et fonctions principales de WorkManager

1. OneTimeWorkRequestBuilder

Fonction : Crée une demande d'exécution unique pour une tâche. La tâche est exécutée une fois, puis supprimée de la file d'attente.

Paramètres :

  • workerClass (obligatoire) — classe héritant de Worker ou CoroutineWorker.
  • setInitialDelay() — délai avant l'exécution (en millisecondes).
  • setConstraints() — contraintes (par exemple, connexion Internet).
  • addTag() — tag pour regrouper les tâches.
  • setInputData() — données d'entrée pour le Worker.

Exemple :

val request = OneTimeWorkRequestBuilder                    

Recommendations