System.currentTimeMillis() uptimeMillis elapsedRealtime 區別


System.currentTimeMillis()  系統時間,也就是日期時間,可以被系統設置修改,然后值就會發生跳變。

uptimeMillis 自開機后,經過的時間,不包括深度睡眠的時間

elapsedRealtime自開機后,經過的時間,包括深度睡眠的時間

 

所以System.currentTimeMillis()不適合計算時間間隔,eg,

now = System.currentTimeMillis()

//do something...

duration = System.currentTimeMillis() -now;


如果在do something的時候,改變了系統時間,那么 獲取duration就不准了。通常在比較小的時間里,(毫秒級,秒級)一般不會有什么問題,系統時間可能不會改變。但是如果時間很長的話,那就保證不了了

 

uptimeMillis由於不計算睡眠時間,所以非常適合做一些特殊的時間間隔計算

elapsedRealtime 包括睡眠時間,適用於任何情況下的時間間隔計算

深度睡眠前全部的辦公都可以接着,不必從新敞開手續。進入了睡鄉后,電腦將只有內存通電,用以保留辦公狀況的數值,而其它硬件則所有斷電,因為這個耗電量十分低。

參考:http://zhidao.baidu.com/link?url=sO3npfaq2eTUXl551mZl-fR-C_iM59cDf3Z8-DFzybrJcHG9h1mty5kZ6RAvNXTaQMWp5f8ZLSG4cYKqJekLZboz8zMLuxKRjogGvLb9mLq

 

 

轉自:http://blog.csdn.net/wutianyin222/article/details/8853958


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM