2012-11-25 19 views
6

Die Android docs on uptimeMillis() sagt:Wie könnte SystemClock.uptimeMillis() jemals umbrechen?

Returns Millisekunden seit dem Boot, nicht mitgerechnet Zeit im Tiefschlaf verbracht. Hinweis: Dieser Wert kann gelegentlich zurückgesetzt werden (bevor er andernfalls umbrochen wird).

Es scheint ziemlich merkwürdig, dass die Docs sich Sorgen machen, dass sie sich jemals darum kümmern. Immerhin gibt die Methode eine lange zurück. Eine schnelle Berechnung ergibt, dass es ungefähr 292,271,023 Jahre dauern würde, bis es sich umwickelt !!!

Also, was ist los mit den Dokumenten? Ist es wirklich jemals möglich, es zu wickeln? Kann der Wert vielleicht umbrechen, bevor er den maximalen Wert für eine lange Zeit erreicht? Ist es das, was die Ärzte eigentlich sagen wollen? Und wenn ja, wann würde es umhüllen?


[Es ist vor allem als System.currentTimeMillis() rätselhaft ist auch eine lange, die Zeit seit einer Epoche darstellt. Android erwähnt die Möglichkeit des Wertumwickelns jedoch absolut nicht. Umso mehr, für uptimeMillis, die bei 0 beginnt ...

+1

Als ein Punkt von Interesse: [SystemClock.elapsedRealtimeNanos()] (http://developer.android.com/reference/android/os/SystemClock.html#elapsedRealtimeNanos%28%29) hat keine besonderen Hinweise. .. – Sam

Antwort

5

Dies ist vor allem Vermutung, aber scheint auf der Grundlage der Dokumente Sinn, die ich gefunden habe. Wenn wir berücksichtigen, dass native public static long uptimeMillis() in SystemClock eine native Methode ist, die im 32-Bit-Bereich läuft und dann einfach in ein Java long umgewandelt wird, dann macht es Sinn, weil 2^32 Millisekunden sehr leicht erreichbar sind.

+1

32-Bit-Speicherplatz bedeutet nicht, dass Sie nicht lange mit einem Bereich größer als 2^32 zurückgeben können .. – icyerasor