Android JobScheduler错误:重新启动后延迟增加(参数minimumLatency)

时间:2018-06-19 17:22:27

标签: android kotlin android-jobscheduler

我正在使用Android JobScheduler,使用JobInfo.Builder()在指定时间启动我的服务。 即使我的设备进入睡眠模式,一切也都可以正常工作。但是当我重新启动设备时,所有作业仍然存在,但是它们的延迟增加到了惊人的数量。

我正在创建具有指定延迟(参数minimumLatency)的作业,并使用参数setPersisited(true)以便在重新启动后保留作业。

例如,假设我将minimumLatency设置为120_000m​​s。 如果我不重新启动,则在指定的延迟后,我的任务将正确执行。 但是,如果我在执行任务之前重新启动,我的模仿能力将增加到大约400亿毫微米

我还试图将OverrideDeadline()设置为各种延迟,但这无济于事

这是我创建工作的方式:

JobInfo.Builder(id, componentName)
                .setExtras(bundle)
                .setPersisted(true)
                .setMinimumLatency(initialDelay)
                .setRequiredNetworkType(JobInfo.NETWORK_TYPE_ANY)
                .build()
                .let {
                   context.getSystemService(JobScheduler::class.java). schedule(it)
                    }

如果您对此问题有任何线索,请告诉我。

任何帮助将不胜感激。 谢谢

1 个答案:

答案 0 :(得分:0)

我找到了问题以及解决方法。也许这会帮助某人。 这实际上是一个错误。 当设备启动时,在日志中,我可以看到设备的日期是2016年12月31日。 然后,稍后在连接Internet时,系统的日期将更新为今天的日期。 所以我认为我增加的延迟时间是从今天到2016年12月31日!

我认为Android正在设置日期之前启动JobScheduler服务,因此他们将日期设置为一年半。 我猜这取决于设备。我在Android TV上。

无论如何,这显然不能直接解决,因此我在服务中实现了自己的重新计划,并且我不保留persited参数。 而且这样做实际上对我的项目和将来所需的自定义设置更好。