Android中3种时间获取方法的差异

 在android.os.SystemClock这个类中,文档详细的阐述了3种方法的差异和适用范围。 

1.System.currentTimeMillis()

像一个标准的挂钟("wall" clock)一样(时间和日期)描述了自从世界协调时间1970年1月1日0:00到现在的时间差,以毫秒为单位计算。

但是这个时间可以通过用户或电话的网络来修改(可以使用setCurrentTimeMillis(long)来修改),因此这个时间就变得不可预测。

所以通常情况下,我们应该在与真实世界相关的地方使用这个时间。例如日历或者闹钟,而内部时间或者计算流逝掉的时间应该采用不同的方法。如果非要用System.currentTimeMillis(),那么应该设置一个监听器来监听 ACTION_TIME_TICK, ACTION_TIME_CHANGED 和 ACTION_TIMEZONE_CHANGED 这三个Intent广播,当时间发生改变的时候。


2.uptimeMillis() 

 从系统启动之后开始即时,当系统进入深度休眠(如CPU关闭,屏幕关闭,设备等待外部输入)的时候停止。不会受到时钟调整,空闲,或者其他节能机制的影响。这个方法是大多数内部计时的基础。如Thread.sleep(millis), Object.wait(millis) 和 System.nanoTime()。这个计时器保证不会发生变化。

对于用户界面事件,和相关的处理,推荐采用这个计时器。


3.elapsedRealtime() 

从系统启动之后一直运行,即使进入深度休眠(CPU关闭,屏幕关闭)也不会停止,适用于需要跨越多个休眠周期的计时。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Android时间校准源码主要包括与网络时间同步的功能。在Android系统,通过网络校准时间可以确保设备的系统时间准确,并优化各应用程序的正常运行。 Android提供了一个时间校准模块,它通过与网络时间服务器进行通信,获取网络时间并将其与设备的本地时间进行比较和校准。在Android时间校准源码,主要包含以下几个关键的步骤: 1. 获取网络时间Android使用NTP(Network Time Protocol)来获取网络时间。该协议通过与网络时间服务器进行通信,获取准确的全球标准时间。 2. 比较本地时间和网络时间获取到网络时间后,系统会将其与设备的本地时间进行比较。通过计算两者的差值,判断本地时间是否准确。 3. 校准时间:如果本地时间与网络时间存在差异,系统会将网络时间作为参考,对设备的本地时间进行校准调整。这样可以确保设备的系统时间始终保持准确。 4. 同步操作:系统会将校准后的时间同步到各个应用程序和系统模块。这样可以保证应用程序在使用时间相关功能时,始终使用准确的时间信息。 通过实现时间校准源码,Android系统可以自动获取准确的网络时间,并在发生时间差异时进行校准调整,以保证设备的时间始终保持准确。这对于一些需要时间同步的应用程序非常重要,例如计时器、日历、定时任务等。同时,时间校准源码也可以为开发者提供一些参考,帮助他们实现自己的时间校准功能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值