WorkManager. У меня продолжительная по времени задача, передача порядка сотен файлов на сервер. Я думал создам задачу и пусть WorkManager пересылает данные когда можно.
И встал вопрос с обратной связью, например узнать сколько уже передано. Т.е. не по факту выполнения задачи, а на текущий момент. Возможно это реализовать?
Если для каждого файла создать задачу на передачу, то в WorkManager при старте или планировании задачи можно передать слушателя (WorkListener). В методе WorkListener.workCompleted увеличивать счетчик обработанных задач в контексте, видимом с нужных мест. Зная общее количество задач и количество выполненных, можно легко определить прогресс.
Если все делаешь в одной задаче, то в ней надо надо самому определить точки прогресса (например после передачи очередного файла в цикле) и также инкрементить счетчик в передаваемом контексте.
Например для второго случая:
Worker {
private final AtomicInteger counter;
public Worker(AtomicInteger counter) {
this.counter = counter;
}
public run() {
for (... цикл по файлам) {
... пересылаем файл
counter.incrementAndGet();
}
}
}
Сборка персонального компьютера от Artline: умный выбор для современных пользователей