我将WorkManager的版本提高到2.3.4,并且有一个名为SpecifyJobSchedulerIdRange
的新皮棉规则,其描述为:“警告,当应用程序使用JobService
但未为WorkManager指定jobIds时。”和说明:
直接使用JobScheduler API时,WorkManager要求开发人员指定一定范围的JobScheduler ID,这些ID可供WorkManager安全使用,因此
id
不会冲突。 有关更多信息,请查看androidx.work.Configuration.Builder.setJobSchedulerJobIdRange(int,int)。
我指定了WorkManager可以通过setJobSchedulerJobIdRange函数使用的ID范围,但我仍然收到该棉绒警告。奇怪的是,我的自定义JobService而不是Configuration.Builder收到了棉绒警告。
在我的应用程序类中:
override fun getWorkManagerConfiguration(): Configuration {
return Configuration.Builder()
.setWorkerFactory(workerFactory)
.setJobSchedulerJobIdRange(100000, 101000)
.build()
}
答案 0 :(得分:0)
我也遇到了这个问题,并花了一些时间在这里查看皮棉问题的代码https://android.googlesource.com/platform/frameworks/support/+/androidx-master-dev/work/workmanager-lint/src/main/java/androidx/work/lint/SpecifyJobSchedulerIdRangeIssueDetector.kt
如果我没记错的话,lint检查将查找所有扩展JobService的类,然后确保这些类中至少有一个调用androidx.work.Configuration.Builder.setJobSchedulerJobIdRange
我更新了JobService的1扩展,以将配置作为静态方法提供给我的应用程序类,这解决了皮棉问题。
我不太确定它是否确实是一个皮棉问题-似乎很奇怪,必须在JobService类中声明工作管理器的配置,尤其是当需要它的Application类时,但这也许是他们的意思?确保使用Job Ids的类为每个人都设置了吗?