Android时间更新

简介

NITZ(Network Identity and Time Zone,网络标识和时区):可以理解为是运营商基站发送的消息,当手机有信号注册到网络之后,就会收到该消息用来更新时间和时区。所以NITZ需要运营商网络支持(通过CS网络),目前国内电信、移动都支持NITZ方式更新时间日期,而联通目前不支持。

NTP(Network Time Protocol):此种方式是通过访问ntp服务器来更新时间的,所以需要手机可以上网,连接wifi或者开启数据连接都可以。Ntp方式只能更新时间,无法更新时区。

NITZ

1、触发条件

NITZ消息是基站发送的,手机只能被动接收,一般在下面几种情况下会收到消息:

(1)开机手机第一次注册到网络(运营商支持)。

(2)手机丢网再注网(例如开关下飞行模式)。

(3)从一个地方到另一个地方,小区基站信息发生变化。

我们在做测试时,可以通过前两种方式抓取log分析,log出现如下信息,证明nitz更新了时间和时区:

e6c733d538eea4a5ca75051af5fd4bf7.png

2、更新流程

Nitz的更新流程在ServiceStateTracker.java中实现,下图是个简易的更新流程图,具体实现可以看代码。

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐