Job Scheduler 间隔被调用的方式太少了
Job Scheduler interval gets called way too infrequent
我的应用程序以 60 秒的周期间隔安排 JobScheduler:
val service = ComponentName(packageName, MonitorService::class.java.name)
val job = JobInfo.Builder(JOB_ID, service)
.setPeriodic(interval) // interval is 60*1000
.setPersisted(true)
.setRequiresCharging(false)
.build()
jobScheduler.schedule(job)
我知道 Android OS 优化了作业调度程序,因此它永远不会被准确地调度,而是大约 2~3 分钟后。我在自己的设备(HTC One M8 with Android 6.0)上验证了这一行为。
在许多(各种)其他设备上,间隔 很多 更不频繁(例如仅每小时 once/twice)。
我该如何解决? Job Scheduler 可能不适合我的用例吗?API?
较新版本的 Android 的 JobScheduler
最短时间为 15 分钟。 See getMinPeriodMillis()
.
就您的 "use case" 而言,每分钟做任何事情对电池寿命来说都是可怕的。用户对此非常大声抱怨,因此Google继续采取措施阻止应用这样做。例如,Android 6.0+ 上的打瞌睡模式和应用程序待机会导致您的作业 运行 非常罕见,大约每小时一次或更少。
我的应用程序以 60 秒的周期间隔安排 JobScheduler:
val service = ComponentName(packageName, MonitorService::class.java.name)
val job = JobInfo.Builder(JOB_ID, service)
.setPeriodic(interval) // interval is 60*1000
.setPersisted(true)
.setRequiresCharging(false)
.build()
jobScheduler.schedule(job)
我知道 Android OS 优化了作业调度程序,因此它永远不会被准确地调度,而是大约 2~3 分钟后。我在自己的设备(HTC One M8 with Android 6.0)上验证了这一行为。
在许多(各种)其他设备上,间隔 很多 更不频繁(例如仅每小时 once/twice)。
我该如何解决? Job Scheduler 可能不适合我的用例吗?API?
较新版本的 Android 的 JobScheduler
最短时间为 15 分钟。 See getMinPeriodMillis()
.
就您的 "use case" 而言,每分钟做任何事情对电池寿命来说都是可怕的。用户对此非常大声抱怨,因此Google继续采取措施阻止应用这样做。例如,Android 6.0+ 上的打瞌睡模式和应用程序待机会导致您的作业 运行 非常罕见,大约每小时一次或更少。