Junior — Middle
Jak anulować zadanie uruchomione przez WorkManager?
sobes.tech AI
Odpowiedź od AI
Aby anulować zadanie uruchomione za pomocą WorkManager na Androidzie, można użyć metod anulowania dostarczonych przez sam WorkManager. Główne sposoby anulowania:
- Anulowanie po identyfikatorze zadania (UUID):
val workManager = WorkManager.getInstance(context)
workManager.cancelWorkById(workRequest.id)
- Anulowanie po tagu, jeśli zadanie zostało uruchomione z tagiem:
workManager.cancelAllWorkByTag("myTag")
- Anulowanie po nazwie łańcucha zadań:
workManager.cancelUniqueWork("uniqueWorkName")
Po wywołaniu metody anulowania, WorkManager spróbuje zatrzymać wykonanie zadania, jeśli jeszcze nie zostało zakończone. Ważne jest, aby w samym zadaniu (Worker) zaimplementować poprawne obsługiwanie anulowania, np. sprawdzając flagę isStopped i odpowiednio kończąc pracę.
Przykład w Workerze:
class MyWorker(context: Context, params: WorkerParameters) : Worker(context, params) {
override fun doWork(): Result {
for (i in 0 until 100) {
if (isStopped) {
return Result.failure()
}
// Wykonanie części pracy
}
return Result.success()
}
}