Sobes.tech
Junior — Middle

Kaip atšaukti užduotį, pradėtą per WorkManager?

sobes.tech AI

Atsakymas iš AI

Norėdami atšaukti užduotį, pradėtą naudojant „WorkManager“ „Android“ įrenginyje, galite naudoti pačios „WorkManager“ teikiamus atšaukimo metodus. Pagrindiniai atšaukimo būdai:

  1. Atšaukimas pagal užduoties ID (UUID):
val workManager = WorkManager.getInstance(context)
workManager.cancelWorkById(workRequest.id)
  1. Atšaukimas pagal žymę, jei užduotis buvo pradėta su žyme:
workManager.cancelAllWorkByTag("myTag")
  1. Atšaukimas pagal užduočių grandinės pavadinimą:
workManager.cancelUniqueWork("uniqueWorkName")

Po atšaukimo metodo iškvietimo „WorkManager“ bandys sustabdyti užduoties vykdymą, jei ji dar nebaigta. Svarbu, kad pačioje užduotyje (Worker) būtų įgyvendinta teisinga atšaukimo tvarkymas, pvz., patikrinus isStopped žymeklį ir laiku išeiti.

Pavyzdys Worker viduje:

class MyWorker(context: Context, params: WorkerParameters) : Worker(context, params) {
    override fun doWork(): Result {
        for (i in 0 until 100) {
            if (isStopped) {
                return Result.failure()
            }
            // Darbo dalies vykdymas
        }
        return Result.success()
    }
}