注:本文不讨论NITZ时间
源码位置:
frameworks/base/services/core/java/com/android/server/NetworkTimeUpdateService.java
frameworks/base/core/java/android/util/NtpTrustedTime.java
frameworks/base/core/res/res/values/config.xml
【更新逻辑】
NetworkTimeUpdateService 网络时间更新服务,在系统刚开机时随着SystemServer就启动的,
开机后,如系统数据库中自动时间设置项 Settings.Global.AUTO_TIME 有变化,或网络可用,则触发一次Ntp时间更新,
【更新规则如下】
1) 如果系统没有设置自动时间更新,或者无可用网络,则不会更新;
2) 如果有过一次来自Modem的时间(NITZ)更新,且更新时间间隔小于24h, 则不会更新;
3) 如果没有进行过Ntp更新,或者距离上一次Ntp更新间隔大于24h,或Auto_time设置改变了(手动设置时间 -> 自动时间),则继续;
4) Ntp中缓存时间大于24h,则初始化一次;(初次进入会强制更新一次,但可能会因为没有联网而失败);
5) 经过4)后,如果Ntp缓存时间小于24h(说明Ntp请求成功了),并且从Ntp获取的时间和当前系统时间差大于5s,或者是