我正在尝试让我的应用程序在 Android 9 上运行。以下代码在 Android 8 上运行良好,但由于某种原因,JobService 没有在 android 9 上重新安排。它第一次安排但没有重新安排根据到设定的周期。
class RetrieveJobService : JobService() {
override fun onStartJob(params: JobParameters): Boolean {
doBackgroundWork(params)
return true
}
private fun doBackgroundWork(params: JobParameters) {
Thread {
try {
doRetrieveBackgroundStuff(this)
jobFinished(params, false)
} catch (e: Exception) {
jobFinished(params, false)
}
}.start()
}
override fun onStopJob(params: JobParameters): Boolean {
return false
}
}
这里是我的 JobInfo.Builder
val builder = JobInfo.Builder(jobID, componentName)
.setPersisted(true)
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
builder.setPeriodic(millis, 15 * 60 * 1000) //15 min
} else {
builder.setPeriodic(millis)
}
builder.setRequiredNetworkType(JobInfo.NETWORK_TYPE_UNMETERED)
val scheduler = context.getSystemService(JOB_SCHEDULER_SERVICE) as
JobScheduler
val resultCode = scheduler.schedule(builder.build())
有任何想法吗?编辑:为了清楚起见,此代码在 Android 8 及更低版本上运行良好,也适用于运行 Android 9 的 Android Studio 模拟器。据我测试,它不适用于运行 Android 9 的任何物理设备。