根據Android Developer ReferenceuptimeMillis()
返回自啓動以來的毫秒數,不計算在深度睡眠中花費的時間。我檢查的 uptimeMillis()
在我的代碼實現,它大致是這個 -使用CLOCK_MONOTONIC的Android(Linux)正常運行時間
struct timespec t;
t.tv_sec = t.tv_nsec = 0;
clock_gettime(CLOCK_MONOTONIC, &t);
return (int64_t)(t.tv_sec)*1000000000LL + t.tv_nsec;
據我所知,一些不明點CLOCK_MONOTONIC
數線性,包括睡眠時間。
這裏是我的doubts-
如果
CLOCK_MONOTONIC
包括睡眠時間,怎麼來uptimeMillis()
沒有考慮到這一點?如果我的理解錯誤並且CLOCK_MONOTONIC
沒有考慮睡眠,那麼我應該使用什麼來獲得包括睡眠在內的系統正常運行時間?什麼是深度睡眠? CPU空閒是否被稱爲深度睡眠?
在Linux中,未指定點的值是什麼?你能否在代碼中指出這個時鐘開始的地方?當系統被暫停
非常感謝janneb!這非常有幫助。但你能詳細說明暫停嗎?通過暫停,你的意思是這個過程暫停或整個CPU閒置? – 2011-06-15 16:13:45
@Pavan:暫停,因爲在整個系統中暫停。 – janneb 2011-06-15 16:34:46
再次感謝!我檢查了2.6.35。 'CLOCK_BOOTTIME'還沒有!但是'SystemClock.elapsedRealtime()'仍然可以做到!任何想法,它是如何做的? – 2011-06-15 17:29:17