2012-11-25 17 views
6

Android docs on uptimeMillis()說:開機以來SystemClock.uptimeMillis()如何包裝?

返回毫秒,在深睡眠中度過的不計算時間。 注意:此值可能會偶爾重置(在它將以其他方式迴繞之前)。

看起來很奇怪的是,文檔擔心它會四處包裹。畢竟,該方法返回一個長。快速計算得出,它將需要約292,271,023年才能包裝!

那麼文檔怎麼了?它真的有可能包裹嗎?值可能在達到最大值之前換行很長時間?這是文檔實際上想說的是什麼?如果是這樣,它會在什麼時候換行?


[這是特別令人費解作爲System.currentTimeMillis()也是一個長表示,因爲一個曆元的時間。然而,Android絕對沒有提到價值包裝的可能性。更重要的是,爲uptime米利斯開始在0 ...]

+1

作爲一個興趣點:[SystemClock.elapsedRealtimeNanos()](http://developer.android.com/reference/android/os/SystemClock.html#elapsedRealtimeNanos%28%29)沒有任何特別的注意事項。 .. – Sam

回答

5

這主要是猜測,但似乎是有道理的基礎上我找到的文檔。如果我們考慮到在SystemClock中的native public static long uptimeMillis()是一種本地方法,它在32位空間中運行,然後當您調用它時簡單地轉換爲Java long,那麼它很有意義,因爲2^32毫秒很容易到達。

+1

32位空間並不意味着您不能返回長度大於2^32的範圍。 – icyerasor