我正在使用Android JobScheduler,使用JobInfo.Builder()在指定时间启动我的服务。 即使我的设备进入睡眠模式,一切也都可以正常工作。但是当我重新启动设备时,所有作业仍然存在,但是它们的延迟增加到了惊人的数量。
我正在创建具有指定延迟(参数minimumLatency)的作业,并使用参数setPersisited(true)以便在重新启动后保留作业。
例如,假设我将minimumLatency设置为120_000ms。 如果我不重新启动,则在指定的延迟后,我的任务将正确执行。 但是,如果我在执行任务之前重新启动,我的模仿能力将增加到大约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)
}
如果您对此问题有任何线索,请告诉我。
任何帮助将不胜感激。 谢谢
答案 0 :(得分:0)
我找到了问题以及解决方法。也许这会帮助某人。 这实际上是一个错误。 当设备启动时,在日志中,我可以看到设备的日期是2016年12月31日。 然后,稍后在连接Internet时,系统的日期将更新为今天的日期。 所以我认为我增加的延迟时间是从今天到2016年12月31日!
我认为Android正在设置日期之前启动JobScheduler服务,因此他们将日期设置为一年半。 我猜这取决于设备。我在Android TV上。
无论如何,这显然不能直接解决,因此我在服务中实现了自己的重新计划,并且我不保留persited参数。 而且这样做实际上对我的项目和将来所需的自定义设置更好。