Как реализовать цепочку PeriodicWorkRequest?

Я изучаю Android WorkManager и увлекаюсь одной проблемой.

У меня есть 2 работы, первая из них извлекает некоторые данные с сервера, а вторая - ресурсы предварительной загрузки (зависит от результата первой работы). Мне нужно делать эти цепочки один раз в час.

Мне нужно что-то вроде:

workManager.beginWith(work1).then(work2)

Но в API WorkManger я нашел цепочку только для OneTimeWorkRequest.


person Andrey    schedule 31.10.2018    source источник
comment
Вы узнали, как выполнять периодические запросы на работу в цепочке?   -  person Ravi Parmar    schedule 05.12.2018
comment
Нет, но для этого случая я использую периодического воркера, который запускает цепочку OneTimeWorkRequests, выглядит некрасиво, но у меня работает   -  person Andrey    schedule 05.12.2018


Ответы (2)


Вы не можете связать PeriodicWorkRequests. Для вашего варианта использования вы можете рассмотреть возможность использования OneTimeWorkRequest с Worker, который ставит в очередь свою копию в конце doWork() с начальной задержкой (для имитации периодичности).

Таким образом, вы все еще можете создавать цепочки. Я бы пометил все запросы на работу последовательно, чтобы вы могли getWorkInfosByTagLiveData() правильно.

person Rahul    schedule 26.05.2019

Продвигая комментарий Эндрю в ответ:

У Google был открытый билет для добавления этой функции (см. здесь).

Официальное решение Google заключалось в том, чтобы создать периодический рабочий запрос с работником инициации цепочки, в котором doWork () этого рабочего определяет и ставит в очередь цепочку одноразовых рабочих запросов.

person Re'em    schedule 24.10.2020