2011年8月24日

Android: 時鐘Clock機制

大略翻譯Android技術文件如下:
Android 有三種不同的時鐘可用,分別陳述如下:
  • System.currentTimeMillis() 如同掛在牆壁上的時鐘(時間/日期)以milliseconds表示之,可被使用者或經由網路隨意往前或往後調整的時鐘(函數setCurrentTimeMillis(long))。此時鐘應該只用來與真實時間相關是務上,例如行事曆或鬧鐘等應用程式。計算時距或經過時間,應該使用底下的時鐘。當使用System.currentTimeMillis() 時,可以接收 ACTION_TIME_TICKACTION_TIME_CHANGEDACTION_TIMEZONE_CHANGEDIntent的廣播來得知時間的改變。
  • SystemClock.uptimeMillis() 計算從系統啟動booted到現在所經過的milliseconds時間,但當系統進入深睡時(CPU停止,螢幕關閉,裝置等待外部輸入) 此時鐘會停止,除此之外不受其他影響。此時鐘是大部份計算時間間隔的基礎,例如Thread.sleep(millls)Object.wait(millis)System.nanoTime()
    它保證是遞增的,建議用來
    計算一般使用者介面事件、效能或其他任何無須考慮裝置睡覺時間的時間間隔。uptimeMillis() clock 傳回 timestamp 值。
  • SystemClock.elapsedRealtime() 計算從系統啟動booted到現在所經過的milliseconds時間,包括系統深睡時間。此時鐘用來必須計算橫跨多個系統睡覺時間的時間間隔。


有一些機制可以控制計時事件

沒有留言: