Sobes.tech
Junior — Middle

Come si può annullare un task avviato tramite WorkManager?

sobes.tech AI

Risposta dell'AI

Per annullare un task avviato tramite WorkManager su Android, puoi utilizzare i metodi di cancellazione forniti dallo stesso WorkManager. I principali metodi di cancellazione:

  1. Annullamento per ID del task (UUID):
val workManager = WorkManager.getInstance(context)
workManager.cancelWorkById(workRequest.id)
  1. Annullamento per tag, se il task è stato avviato con un tag:
workManager.cancelAllWorkByTag("myTag")
  1. Annullamento per nome della catena di task:
workManager.cancelUniqueWork("uniqueWorkName")

Dopo aver chiamato il metodo di cancellazione, WorkManager tenterà di fermare l'esecuzione del task se non è ancora stato completato. È importante che all'interno del task stesso (Worker) venga implementata una corretta gestione dell'annullamento, ad esempio verificando il flag isStopped e uscendo tempestivamente.

Esempio all'interno del 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()
            }
            // Esecuzione di una parte del lavoro
        }
        return Result.success()
    }
}