Android网络时间更新NetworkTimeUpdateService (基于源码8.0分析)

本文分析了Android系统中NetworkTimeUpdateService的网络时间更新逻辑,包括更新规则和触发更新的事件。当自动时间设置开启且有网络时,系统会进行Ntp时间更新。更新条件包括:Ntp缓存时间超过24小时、与系统时间差大于5秒或初次Ntp请求。如果更新失败,将在1分钟后重试,3次失败后等待24小时再试。
摘要由CSDN通过智能技术生成

注:本文不讨论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,或者是

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值