WorkManager обратная связь из задачи

231
01 ноября 2019, 15:20

WorkManager. У меня продолжительная по времени задача, передача порядка сотен файлов на сервер. Я думал создам задачу и пусть WorkManager пересылает данные когда можно.

И встал вопрос с обратной связью, например узнать сколько уже передано. Т.е. не по факту выполнения задачи, а на текущий момент. Возможно это реализовать?

Answer 1

Если для каждого файла создать задачу на передачу, то в WorkManager при старте или планировании задачи можно передать слушателя (WorkListener). В методе WorkListener.workCompleted увеличивать счетчик обработанных задач в контексте, видимом с нужных мест. Зная общее количество задач и количество выполненных, можно легко определить прогресс.

Если все делаешь в одной задаче, то в ней надо надо самому определить точки прогресса (например после передачи очередного файла в цикле) и также инкрементить счетчик в передаваемом контексте.

Например для второго случая:

Worker {
  private final AtomicInteger counter;
  public Worker(AtomicInteger counter) {
    this.counter = counter;
  }
  public run() {
    for (... цикл по файлам) {
      ... пересылаем файл
      counter.incrementAndGet();
    }
  }
}
READ ALSO
Почему студент не удаляется по id (Java Servlet + MySQL) [закрыт]

Почему студент не удаляется по id (Java Servlet + MySQL) [закрыт]

Не могу удалить студента из Базы Данных по IDГде я ошибся?

264
Как улучшить свой код?

Как улучшить свой код?

Сейчас читаю Чистый код Мартина и стараюсь улучшить свой кодУ меня есть абстрактный класс Filter :

283
использование класса в разных проектах

использование класса в разных проектах

у меня два вопроса я создал класс G2d для своего удобства работы с графикой:

227