Job Scheduler间隔被调用的方式太罕见了

时间:2017-08-28 18:57:42

标签: android kotlin android-jobscheduler

我的应用安排JobScheduler,周期间隔为60秒:

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操作系统优化了作业调度程序,因此它永远不会完全安排,但是需要2到3分钟之后。我在自己的设备上验证了这种行为(HTC One M8 with Android 6.0)。

在许多(各种)其他设备上,间隔更不频繁(例如每小时一次/两次)。

我该如何解决? Job Scheduler可能不是我用例的正确API吗?

1 个答案:

答案 0 :(得分:6)

在较新版本的Android上,JobScheduler最短时间为15分钟。 See getMinPeriodMillis()

就你的“用例”而言,每分钟做任何事都对电池寿命来说太可怕了。用户已经抱怨非常大声,因此Google继续采取措施阻止应用程序执行此操作。例如,Android 6.0+上的打盹模式和应用程序待机状态将导致您的作业很少运行,大约每小时一次。