Sobes.tech
Junior — Middle

Kako otkazati zadatak pokrenut putem WorkManager-a?

sobes.tech АИ

Одговор од АИ

Da biste otkazali zadatak pokrenut putem WorkManager na Androidu, možete koristiti metode za otkazivanje koje pruža sam WorkManager. Glavni načini otkazivanja:

  1. Otkazivanje po ID-u zadatka (UUID):
val workManager = WorkManager.getInstance(context)
workManager.cancelWorkById(workRequest.id)
  1. Otkazivanje po oznaci, ako je zadatak pokrenut s oznakom:
workManager.cancelAllWorkByTag("myTag")
  1. Otkazivanje po imenu lanca zadataka:
workManager.cancelUniqueWork("uniqueWorkName")

Nakon poziva metode otkazivanja, WorkManager će pokušati zaustaviti izvršavanje zadatka ako još nije završen. Važno je da sama zadatak (Worker) implementira ispravno rukovanje otkazivanjem, na primer, proverom zastavice isStopped i pravovremenim izlaskom.

Primer unutar Worker-a:

class MyWorker(context: Context, params: WorkerParameters) : Worker(context, params) {
    override fun doWork(): Result {
        for (i in 0 until 100) {
            if (isStopped) {
                return Result.failure()
            }
            // Izvršavanje dela posla
        }
        return Result.success()
    }
}