WorkManager 2.3.4-新的棉绒规则

时间:2020-05-06 07:42:29

标签: android lint android-workmanager

我将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()
}

1 个答案:

答案 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的类为每个人都设置了吗?