2013-08-04 82 views
0

我想了解dumpsys gfxinfo日誌的時間信息。它看起來像這樣:瞭解dumpsys的時間信息gfxinfo

Applications Graphics Acceleration Info: 

Uptime: 16264702 Realtime: 28169900 

誰能告訴我如何將這些數字與System.currentTimeMillis()?

回答

1

ActivityManagerService.java

long uptime = SystemClock.uptimeMillis(); 
    long realtime = SystemClock.elapsedRealtime(); 
    pw.println("Applications Graphics Acceleration Info:"); 
    pw.println("Uptime: " + uptime + " Realtime: " + realtime); 

同樣來自SystemClock描述:

三個不同的時鐘是可用的,並且他們不應該混淆:

System.currentTimeMillis()是標準的 「牆」 時鐘(時間和 日期)表示自紀元以來的毫秒數。由用戶或電話網絡(見setCurrentTimeMillis(long)), 設置的掛鐘可以是 ,因此時間可能會跳躍或轉發不可預測。此時鐘 只能在與實際日期和 時間的對應關係很重要時才使用,例如在日曆或鬧鐘應用程序中。 時間間隔或經過時間測量應使用不同的時鐘。如果您使用的是 System.currentTimeMillis(),請考慮收聽 ACTION_TIME_TICK,ACTION_TIME_CHANGEDACTION_TIMEZONE_CHANGED 意圖廣播以查明時間何時更改。

uptimeMillis()以系統啓動後的毫秒計算。當系統進入深度睡眠(CPU關閉,顯示黑暗,設備等待外部輸入)時,此時鐘停止,但不受時鐘縮放,空閒或其他節能機制的影響。這是大多數間隔時間的基礎,例如Thread.sleep(millls),Object.wait(millis)System.nanoTime()。這個時鐘保證是單調的,並且當間隔不跨越設備睡眠時適用於間隔定時。大多數接受時間戳值的方法目前都會使用uptimeMillis()時鐘。

elapsedRealtime()elapsedRealtimeNanos()返回系統啓動以來的時間,幷包含深度睡眠。這個時鐘保證是單調的,即使在CPU處於省電模式時也會繼續保持時鐘狀態,所以是通用間隔時序的推薦基礎。

+0

謝謝!亞歷克斯。這是全面的。 –

+0

嗨!亞歷克斯,你能解釋uptimeMillis()和elapsedRealtime()與從/ proc/uptime得到的兩個數字有關嗎,似乎實時匹配第一個數字。我想知道這兩個數字是否可以推斷正常運行時間。謝謝! –