我正在Android Things项目中编写一个更新界面。我可以使用用户输入进行手动更新。但是我正在尝试安排每晚的午夜自动更新。我想在截止日期前使用自定义UpdatePolicy,但我无法使用它。

我在活动中的onCreate方法中尝试了此操作:

mUpdateManager.setPolicy(
     new UpdatePolicy.Builder()
         .setPolicy(POLICY_APPLY_AND_REBOOT)
         .setUpdateDeadline(10, TimeUnit.SECONDS)
         .build());


但是10秒后没有任何更新。
也许我不明白最后期限。
我会用错吗?

最佳答案

截止日期与执行更新检查无关。更新检查的通常时间表是


开机后不久
此后每5小时(大约)一次


(由于与该讨论无关的原因,这些时间并不准确。)

截止日期反映了设备将迫使应用程序重新启动之前允许其搁置可用更新的时间。直到执行检查,设备才会知道可用的更新,因此您最多可能需要等待5个小时。

截止日期意味着需要更长的时间范围(例如5天,一周等等)。如果更新调度程序中存在某种错误,或者如果您允许用户推迟更新但又不希望他们永远这样做,则此方法可作为备用。

为了实现您想要的目标,您应该安排(使用WorkManagerJobScheduler等)每天在午夜运行的任务,并调用UpdateManager.performUpdateNow(UpdatePolicy.POLICY_APPLY_AND_REBOOT)

TL,DR:更新检查非常重要。如果您完全在乎计时,请使用UpdateManager.performUpdateNow,但每5小时不超过一次。

10-06 11:27