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

Android JobScheduler bug: delay is increased after reboot (param minimumLatency)

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

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

例如,假设我将 minimumLatency 设置为 120_000ms。 如果我不重新启动,我的任务会在指定的延迟后正确执行。 但是如果我在任务之前重新启动,我的 mimimumLatency 会增加到大约 400 亿毫

我也试过 setOverrideDeadline() 各种延迟,没用

这是我创建作业的方式:

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

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

如有任何帮助,我们将不胜感激。 谢谢

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

我认为 Android 是在设置日期之前启动 JobScheduler 服务,从而让他们认为它会在 1 年半内。 我想这取决于设备。我在 Android 电视上。

无论如何,这显然不能直接解决,所以我在我的服务中实现了我自己的重新安排,我没有保留 persited 参数。 这样做实际上对我的项目和未来所需的自定义更好。