klu*_*usi 7 android lint android-workmanager
我将 WorkManager 的版本增加到 2.3.4,并且有一个新的 lint 规则SpecifyJobSchedulerIdRange,描述为:“当应用程序使用JobService但没有为 WorkManager 指定 jobIds时发出警告。” 和解释:
直接使用 JobScheduler API 时,WorkManager 要求开发人员指定一系列 JobScheduler id,以便 WorkManager 可以安全使用,以免
id发生冲突。有关更多信息,请查看 androidx.work.Configuration.Builder.setJobSchedulerJobIdRange(int, int)。
我指定了 WorkManager 可以通过函数 setJobSchedulerJobIdRange 使用的 id 范围,但我仍然收到 lint 警告。奇怪的是,我的自定义 JobService 而不是 Configuration.Builder 收到了 lint 警告。
在我的应用程序类中:
override fun getWorkManagerConfiguration(): Configuration {
return Configuration.Builder()
.setWorkerFactory(workerFactory)
.setJobSchedulerJobIdRange(100000, 101000)
.build()
}
Run Code Online (Sandbox Code Playgroud)
我也遇到了这个问题,并花了一些时间在这里查看 lint 问题的代码,https://android.googlesource.com/platform/frameworks/support/+/androidx-master-dev/work/workmanager-lint /src/main/java/androidx/work/lint/SpecifyJobSchedulerIdRangeIssueDetector.kt
如果我没记错的话,lint 检查会查找所有扩展 JobService 的类,然后确保这些类中至少有 1 个调用 androidx.work.Configuration.Builder.setJobSchedulerJobIdRange
我更新了 JobService 的 1 扩展,以将配置作为静态方法提供给我的应用程序类,这解决了 lint 问题。
我不太确定它是否真的是一个 lint 问题 - 必须在 JobService 类中声明工作管理器的配置似乎很奇怪,特别是当它的 Application 类需要它时,但也许这就是他们的观点?确保使用作业 ID 的班级为每个人设置它?
| 归档时间: |
|
| 查看次数: |
714 次 |
| 最近记录: |