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

Piw*_*iwo 1 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)
Run Code Online (Sandbox Code Playgroud)

我知道Android操作系统优化了作业调度程序的事实,因此它永远不会完全安排,但需要2~3分钟后.我在自己的设备上验证了这种行为(HTC One M8 with Android 6.0).

在许多(各种)的其它设备在该间隔是多少更不频繁(如一次/两次每小时仅).

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

Com*_*are 6

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

就你的"用例"而言,每分钟做任何事都对电池寿命来说太可怕了.用户对此非常抱怨,因此Google继续采取措施阻止应用程序执行此操作.例如,打盹模式和待机应用在Android 6.0以上版本将导致您的作业极少运行,一小时一次或更少的数量级上.