アプリを 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 を実行している物理デバイスでは動作しません。