根据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