android - WorkManager 运行的作业不超过 20 个

标签 android android-workmanager periodic-task

我正在排队 future 的工作,同时也在“现在”运行初始工作。在 20 个项目入队后,任何添加的新项目都不再立即运行,我将不得不等待 30 天才能看到它们是否运行;)

在将工作项的初始延迟设置为 10 秒(允许的最小值)后,我现在已经等待了超过 24 小时。

如果我安排第 21 个作业,则什么也不会发生。取消任何最初的 20 个作业和 10 秒后运行的第 21 个作业。 100% 可重复——重新安排作业 20,没有。取消作业 21,作业 20 将在 10 秒后运行。

dependencies {
    implementation 'androidx.work:work-runtime:2.3.4'
}

fun scheduleTickle(context: Context, item: Item) {

    // item.id is the auto-generated primary key from the database

    val periodicWorkRequest = PeriodicWorkRequest.Builder(
        MessageWorker::class.java,
        item.minimumInterval,
        TimeUnit.DAYS
    ).let {
        it.setInputData(
            Data.Builder()
                .putLong("EXTRA_KEY_ITEM_ID", item.id)
                .build()
        )
        it.setConstraints(
            Constraints.Builder()
                .setRequiredNetworkType(NetworkType.CONNECTED)
                .build()
        )
        it.addTag("com.example.myapp.periodicWork.${item.id}")
        it.setInitialDelay(10, TimeUnit.SECONDS)
    }.build()

    WorkManager.getInstance(context).enqueueUniquePeriodicWork(
        item.id.toString(),
        ExistingPeriodicWorkPolicy.REPLACE,
        periodicWorkRequest
    )
}

最佳答案

我要大胆猜测你的问题是:

How can I have more jobs?

WorkManager 将向 JobSchedulerAlarmManager 注册的最大作业数,默认情况下为 20。文档是有点奇怪,但是 setMaxSchedulerLimit() 的默认值是MIN_SCHEDULER_LIMIT , 即 20。

原则上,您应该可以通过the custom configuration process 进行调整。 .

但是,如果我正确阅读了这些文档,则强制上限为 50 — 换句话说,您不能将高于 50 的值传递给 setMaxSchedulerLimit()

除非这些工作中的每一项都有完全独立的执行标准,否则您可能会考虑尝试合并一些。例如,根据您的代码,您可以使用一个作业,其时间段为 item.minimumInterval 值的最小公分母,其中作业的一部分工作是查看您的实际待办事项已准备好执行。

关于android - WorkManager 运行的作业不超过 20 个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61972975/

相关文章:

android - EOFException Volley 错误

android - periodicworkrequest仅在android中调用一次

haskell - 如何仅使用 Haskell 无休止地运行 Haskell 程序?

java - PeriodicWorkRequest 不尊重重复时间

python - 如何在 Django 后台定期重复一个函数直到成功?

android - 使用 fusedLocation API 定期发送位置更新

android - 编辑带有可点击和可编辑链接的文本

Java/Android pow precision/scale like in Windows calculator

android - 一个 onActivityResult 中的两个扫描事件

android - 使用自定义参数实现 AndroidX Worker