Sobes.tech
Junior — Middle

Jak zrušit úlohu spuštěnou přes WorkManager?

sobes.tech AI

Odpověď od AI

Chcete-li zrušit úkol spuštěný přes WorkManager na Androidu, můžete použít metody zrušení poskytované samotným WorkManagerem. Hlavní způsoby zrušení:

  1. Zrušení podle ID úkolu (UUID):
val workManager = WorkManager.getInstance(context)
workManager.cancelWorkById(workRequest.id)
  1. Zrušení podle tagu, pokud byl úkol spuštěn s tagem:
workManager.cancelAllWorkByTag("myTag")
  1. Zrušení podle názvu řetězce úkolů:
workManager.cancelUniqueWork("uniqueWorkName")

Po zavolání metody zrušení se WorkManager pokusí zastavit provádění úkolu, pokud ještě nebyl dokončen. Je důležité, aby v samotném úkolu (Worker) byla správná implementace zpracování zrušení, například kontrola vlajky isStopped a včasný ukončení práce.

Příklad uvnitř 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()
            }
            // Provádění části práce
        }
        return Result.success()
    }
}