gpt4 book ai didi

java - 达到 JobScheduler 限制 100 后,WorkManager 对作业做了什么?

转载 作者:行者123 更新时间:2023-12-04 13:38:47 28 4
gpt4 key购买 nike

我已经在互联网上搜索了有关此主题的信息,但似乎没有人再遇到此问题了。

还记得这个有趣的错误吗?

java.lang.IllegalStateException: JobScheduler 100 job limit exceeded. We count 101 WorkManager jobs in JobScheduler; we have 50 tracked jobs in our DB; our Configuration limit is 50.





Caused by: java.lang.IllegalStateException: Apps may not schedule more than 100 distinct jobs



好吧,尽管换了很多工作去做 enqueueUniqueWork ,看来我的一些用户仍在达到该限制。 我的用例是针对那些连接不佳且没有连接的人离线做很多事情,从而创建大量工作来更新远程服务器上的资源 .我从来没有遇到过 FirebaseJobDispatcher 的这个问题(至少我不知道),有些人可能几天都没有信号,如果有人几周都无法连接会发生什么?它将轻松建立数百个工作岗位。因此,这个错误。

我的问题是当达到限制时这些工作会发生什么?它们只是被调度程序丢弃了吗?我现在在输入这个时会丢失人们的数据吗?

更新

Android 版本:在 7.0、8.0、8.1 上确认,可能更多

工作管理器版本:2.3.0

最佳答案

我们最近修复了一个错误,其中 WorkManager 之间存在不匹配。 s 跟踪 JobScheduler 中的工作和 jobs 的实际状态.这发生在非常罕见的情况下,我认为这就是你的情况。

https://issuetracker.google.com/issues/149092520是最近报告的错误。我在公共(public)跟踪器上报告错误之前修复了它,因为谷歌的一个应用程序遇到了相同的边缘情况。

此更改 ( https://android-review.googlesource.com/c/platform/frameworks/support/+/1226859 ) 已修复。我们应该将它作为 WorkManager 的一部分发布2.3.2 很快。

如果您迫不及待,您可以使用与最终版本相同的快照构建。

这是您需要的 gradle 代码段:

repositories {
google()
maven { url 'https://ci.android.com/builds/submitted/6195753/androidx_snapshot/latest/repository/' }
}

dependencies {
implementation "androidx.work:work-runtime:2.4.0-SNAPSHOT"
}

您可能需要做的另一件事是摆脱陈旧的工作。就像调用 JobScheduler.cancelAllJobs() 一样简单在 WorkManager 初始化之前。你可以在 Application.onCreate() 里面做在您的应用程序子类中。

如果您需要更多帮助,请随时联系错误跟踪器,我可以为您提供帮助。

关于java - 达到 JobScheduler 限制 100 后,WorkManager 对作业做了什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60205993/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com