Sobes.tech
Junior — Middle

Comment annuler une tâche lancée via WorkManager?

sobes.tech IA

Réponse de l'IA

Pour annuler une tâche lancée via WorkManager sur Android, vous pouvez utiliser les méthodes d'annulation fournies par WorkManager lui-même. Les principales méthodes d'annulation :

  1. Annulation par identifiant de tâche (UUID) :
val workManager = WorkManager.getInstance(context)
workManager.cancelWorkById(workRequest.id)
  1. Annulation par tag, si la tâche a été lancée avec un tag :
workManager.cancelAllWorkByTag("myTag")
  1. Annulation par nom de la chaîne de tâches :
workManager.cancelUniqueWork("uniqueWorkName")

Après avoir appelé la méthode d'annulation, WorkManager tentera d'arrêter l'exécution de la tâche si elle n'est pas encore terminée. Il est important que la tâche elle-même (Worker) implémente une gestion correcte de l'annulation, par exemple en vérifiant le drapeau isStopped et en sortant en temps voulu.

Exemple dans le Worker :

class MyWorker(context: Context, params: WorkerParameters) : Worker(context, params) {
    override fun doWork(): Result {
        for (i in 0 until 100) {
            if (isStopped) {
                return Result.failure()
            }
            // Exécution d'une partie du travail
        }
        return Result.success()
    }
}