android - Android:JobScheduler有时会重用同一工作实例?

标签 android kotlin android-jobscheduler

我一直以为,如果您安排一个作业,它将始终为该作业创建一个新的JobService实例。经过一些测试,看起来有时会使用相同的作业实例吗?有时它将创建一个新实例,有时则不会。在开始新工作之前,我什至会取消上一个工作,其行为仍然相同。这正常吗?
编辑:
我正在使用3个共享相同工作类别的工作ID。

val jobScheduler = context.getSystemService(Context.JOB_SCHEDULER_SERVICE) as JobScheduler
jobScheduler.cancel(jobId)

// Set up the JobBuilder
val builder = JobInfo.Builder(jobId, componentName)
     .setRequiredNetworkType(networkType)
     .setPeriodic(uploadFrequency)
     .setPersisted(true)
     .setExtras(bundle)

// Schedule
jobScheduler.schedule(builder.build())

最佳答案

我面临的问题最简单的解决方法是不要在工作ID之间共享相同的工作类别。
例如:
JobId 100、101和102不应与同一作业类相关联,例如BackgroundJobService
相反,它们需要与diff不同的类关联,因此应该是从BackgroundJobService扩展的3个作业。

jobId 100 -> class JobService100: BackgroundJobService(){}
jobId 101 -> class JobService101: BackgroundJobService(){}
jobId 102 -> class JobService102: BackgroundJobService(){}
如果作业ID共享同一类,则JobScheduler会重用从其他作业ID创建的实例时会遇到问题。

关于android - Android:JobScheduler有时会重用同一工作实例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62630170/

相关文章:

java - 无法使用 Android Gradle 插件 2.1 生成 View 绑定(bind)程序 java.util.NoSuchElementException

android - 使用 JobScheduler/JobInfo 的显式唤醒锁

使用 jCIFS 流文件的 Android ServerSocket 编程

java - HTTPURLConnection 连接后代码跳到finally

java - Spring Boot JPA @Query 更新不起作用

android - 我怎样才能等到 onsuccess 监听器在 Kotlin 中有结果

android - Swift 中 CC_SHA256 的 Kotlin 等效项是什么?

android - 一直运行 jobscheduler(是否打瞌睡)

android - 相机拍摄新照片时 Oreo JobScheduler 不工作

java - 如何在 Android 和 Google App Engine 中使用共享类