Sobes.tech
Назад к вопросам
Junior — Middle
85

Каким образом можно отменить задачу, запущенную через WorkManager?

Компании, где спрашивали
Ubic

Ответ от нейросети

sobes.tech AI

Для отмены задачи, запущенной через WorkManager в Android, можно использовать методы отмены, предоставляемые самим WorkManager. Основные способы отмены:

  1. Отмена по идентификатору задачи (UUID):
val workManager = WorkManager.getInstance(context)
workManager.cancelWorkById(workRequest.id)
  1. Отмена по тегу, если задача была запущена с тегом:
workManager.cancelAllWorkByTag("myTag")
  1. Отмена по имени цепочки задач:
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()
    }
}