Как избежать одновременной работы нескольких рабочих при соблюдении ограничений? - PullRequest
0 голосов
/ 13 мая 2019

У меня есть несколько рабочих, поставленных в очередь с ограничением NetworkType.CONNECTED. Это гарантирует, что все изменения в моем приложении будут помещены в очередь и отправлены на сервер, когда пользователь подключен к сети.

Недавно у меня было некоторое время простоя на моем сервере, потому что на сервер сразу отправляется МНОЖЕСТВО веб-запросов, я полагаю, что это происходит от некоторых пользователей, у которых много рабочих запросов в очереди (например, в автономном режиме для много времени).

Можно ли избежать одновременной обработки всех рабочих запросов в очереди? Есть ли способ задержки или распространения рабочих запросов во времени при соблюдении ограничения?

val myConstraints = Constraints.Builder().setRequiredNetworkType(NetworkType.CONNECTED).build()

1 Ответ

0 голосов
/ 13 мая 2019

Вы можете использовать начальные задержки для своих WorkRequests: https://developer.android.com/reference/kotlin/androidx/work/OneTimeWorkRequest.Builder#setInitialDelay(kotlin.Long,%20java.util.concurrent.TimeUnit)

Другой способ - использовать PeriodicWorkRequest, который удаляет и загружает несколько ваших запросов при каждом запуске.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...