您的位置:首页 > 移动开发 > Android开发

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

2014-07-22 16:31 141 查看
原帖地址
http://blog.sina.com.cn/s/blog_566b36c60100ybiz.html
也许我们从来不在意获取时间方面的差异,不过如果你仔细阅读文档会发现,android中,有3种不同的时间获取方法:他们之间是存在差异的,并且根据这些差异,应该用在不同的地方。

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

System.currentTimeMillis()像一个标准的挂钟("wall" clock)一样(时间和日期)描述了自从世界协调时间1970年1月1日0:00到现在的时间差,以毫秒为单位计算。但是这个时间可以通过用户或电话的网络来修改(可以使用setCurrentTimeMillis(long)来修改),因此这个时间就变得不可预测。所以通常情况下,我们应该在与
真实世界相关的地方使用这个时间。例如日历或者闹钟,而内部时间或者计算流逝掉的时间应该采用不同的方法。如果非要用System.currentTimeMillis(),那么应该设置一个监听器来监听 ACTION_TIME_TICK, ACTION_TIME_CHANGED 和 ACTION_TIMEZONE_CHANGED 这三个Intent广播,当时间发生改变的时候。

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

elapsedRealtime()这个即时会从系统启动之后一直运行,即使进入深度休眠(CPU关闭,屏幕关闭)也不会停止,适用于需要跨越多个休眠周期的计时。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: