遇到约束时,如何避免多个工人一次全部跑?

时间:2019-05-13 08:36:32

标签: android android-workmanager

我有多个工作队列,并且约束设置为NetworkType.CONNECTED。这样可以确保当用户连接到网络时,我的应用程序中的所有更改都进入队列并发送到服务器。

我最近在服务器上遇到了一些停机,因为同时有很多Web请求一次发送到服务器,我相信这是由于一些用户有很多排队的工作请求(例如:很久)。

我可以避免所有排队的工作请求被同时处理吗?当满足约束条件时,有没有一种方法可以随时间延迟或分散工作请求?

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

1 个答案:

答案 0 :(得分:0)

您可以对工作请求使用初始延迟:https://developer.android.com/reference/kotlin/androidx/work/OneTimeWorkRequest.Builder#setInitialDelay(kotlin.Long,%20java.util.concurrent.TimeUnit)

另一种方法是使用PeriodicWorkRequest,该请求每次运行时都会使您的一些请求出队并上载。