关于在安卓设备的时区校准主要是分两个方面:1 )用户手动选择,根据自己实际的地点选择对应时区;2 )系统自动更新,前面一篇文章介绍了时区自动更新的源头,本篇文章主要是介绍NITZ 和NTP 。 在手动更新时区时,涉及到时区规则的更新,物理上存在的全球二十四个时区,在逻辑上不是依次按照时区相差一个小时,而是根据政治,宗教等因素逻辑划定了时区。比如中国横跨了几个时区,但都采用北京东八时区统一计时。同时,有些地方还会存在夏令时调整的问题,这就需要平台要具有更新时区规则的能力。 时区规则的更新其大概是通过如下方式进行:首先,当一个地区或国家对应时区变化时,IANA(InternetAssigned Numbers Authority) 进行数据库的更新并发布;其次,安卓的ODM 或者OEM 根据时区的更新数据库制作基于对应设备的数据更新模块;最后,相关终端在检测到需要更新时,进行更新模块下载,并重新启动相关应用,更新设备上的时区数据到最新。最后两个过程在设备端主要通过如下四个模块实现:
系统服务 |
RulesManagerService主要是暂存时区更新数据,默认处于停用状态,需要通过overlay机制打开config_enableUpdateableTimeZoneRules |
TimeZoneUpdater |
不可更新的系统应用&# |