Sobes.tech
Junior — Middle

Como cancelar uma tarefa iniciada através do WorkManager?

sobes.tech IA

Resposta da IA

Para cancelar uma tarefa iniciada através do WorkManager no Android, pode usar os métodos de cancelamento fornecidos pelo próprio WorkManager. As principais formas de cancelamento:

  1. Cancelar por ID de tarefa (UUID):
val workManager = WorkManager.getInstance(context)
workManager.cancelWorkById(workRequest.id)
  1. Cancelar por etiqueta, se a tarefa foi iniciada com uma etiqueta:
workManager.cancelAllWorkByTag("myTag")
  1. Cancelar pelo nome da cadeia de tarefas:
workManager.cancelUniqueWork("uniqueWorkName")

Após chamar o método de cancelamento, o WorkManager tentará parar a execução da tarefa se ela ainda não tiver sido concluída. É importante que a própria tarefa (Worker) implemente um manejo adequado de cancelamento, por exemplo, verificando a bandeira isStopped e saindo oportunamente.

Exemplo dentro do 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()
            }
            // Executar parte do trabalho
        }
        return Result.success()
    }
}