2012-11-25 6 views
6

Android docs on uptimeMillis()は言う:深い睡眠に費やされた時間をカウントしないブート以来SystemClock.uptimeMillis()はどのようにラップできますか?

返します(ミリ秒)を、。 注::この値は時折リセットされることがあります(ラップアラウンドする前に)。

ドキュメントがそれを包み込むことを心配しているのはかなり奇妙なようです。結局のところ、メソッドは長いを返します。迅速な計算により、これは約292,271,023年かかるでしょう!

だから、ドキュメントは何ですか?本当にそれが包み込むことは可能ですか?値がおそらく最大値に達する前に値をラップできますか?それはドキュメントが実際に言っていることですか?もしそうなら、それはいつ包装されますか?


[特にSystem.currentTimeMillis()もエポックからの経過時間を表しているの長さであるよう不可解です。それでも、Androidは値のラッピングの可能性について絶対に言及していません。これ以上、稼働時間のために0から始まるMillis ...]

+1

[SystemClock.elapsedRealtimeNanos()](http://developer.android.com/reference/android/os/SystemClock.html#elapsedRealtimeNanos%28%29)には特別な注意事項はありません。 .. – Sam

答えて

5

これは主に推測ですが、私が見つけた文書に基づいて意味があるようです。 native public static long uptimeMillis()SystemClockが32ビット空間で実行されるネイティブメソッドであることを考慮すると、それを呼び出すときにJava longにキャストされるだけで、2^32ミリ秒に非常に簡単に到達できるので意味があります。

+1

32ビットのスペースは、2^32より大きい範囲でlongを返すことはできません。 – icyerasor