Android docs on uptimeMillis()说:
返回自启动以来的毫秒数,不计算深度睡眠所花费的时间。 注意:此值可能会偶尔重置(否则会被包围)。
似乎很奇怪的是,医生们担心它会一直缠绕着。毕竟,该方法返回一个long。一个快速的计算表明它需要大约292,271,023年才能永远包裹!!!
那么文档是什么?它真的可以包装吗?值是否可以在达到最大值之前换行?这是文档实际上试图说的吗?如果是的话,什么时候会换行?
[尤其令人费解,因为System.currentTimeMillis()也是一个代表时代以来时间的长篇。然而,Android绝对没有提到价值包装的可能性。更重要的是,uptimeMillis从0开始......]
答案 0 :(得分:5)
这主要是猜想,但基于我发现的文档似乎有意义。如果我们考虑到native public static long uptimeMillis()
中的SystemClock
是一个本地方法,在32位空间中运行,那么当你调用它时它只是被强制转换为Java long
那么它是有道理的因为2 ^ 32毫秒很容易到达。