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
