【发布时间】:2019-01-21 17:37:02
【问题描述】:
我正在尝试让我的应用在 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 的任何物理设备。
【问题讨论】:
-
当您关闭应用程序或从不工作时它是否不起作用。还有设备制造商名称是什么?
-
关闭应用程序时它永远不会工作,我已经看到它在指定的周期性时间间隔后打开应用程序时工作但它不一致。设备:华为 P20、一加 6T。模拟器:Nexus 5X
-
许多设备制造商,如 OnePlus、Oppo、Huwaei、Redmi、Vivo 等,在从最近的标签中清除应用程序时会强制关闭应用程序。因此,没有计划任务或警报管理器适用于该应用程序。 issuetracker.google.com/issues/110745313
标签: android kotlin job-scheduling android-9.0-pie jobservice