Назад к вопросам
Junior — Middle
85
Каким образом можно отменить задачу, запущенную через WorkManager?
Компании, где спрашивали
Ubic
Ответ от нейросети
sobes.tech AI
Для отмены задачи, запущенной через WorkManager в Android, можно использовать методы отмены, предоставляемые самим WorkManager. Основные способы отмены:
- Отмена по идентификатору задачи (UUID):
val workManager = WorkManager.getInstance(context)
workManager.cancelWorkById(workRequest.id)
- Отмена по тегу, если задача была запущена с тегом:
workManager.cancelAllWorkByTag("myTag")
- Отмена по имени цепочки задач:
workManager.cancelUniqueWork("uniqueWorkName")
После вызова метода отмены WorkManager попытается остановить выполнение задачи, если она ещё не завершена. Важно, чтобы внутри самой задачи (Worker) была реализована корректная обработка отмены, например, проверка флага isStopped и своевременный выход из работы.
Пример внутри 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()
}
// Выполнение части работы
}
return Result.success()
}
}