Wie oft wird Uptimemillis () zurückgesetzt und wird sich auf Handler auswirken.postattime

StackOverflow https://stackoverflow.com/questions/4596352

  •  15-10-2019
  •  | 
  •  

Frage

Die Beschreibung für die Methode Uptimemillis sagt:

Gibt Millisekunden seit dem Start zurück und zählt die Zeit nicht im tiefen Schlaf. Notiz: Dieser Wert kann gelegentlich zurückgesetzt werden (bevor er sich sonst umsetzt).

Wie oft könnte dies passieren und (was noch wichtiger ist, wirkt sich dies aus, die von Runnables ausgewirkt werden, die von ausgeführt werden sollten Handler.Postattime?

War es hilfreich?

Lösung

Das Uptimemillis -Aufruf von Anlagen in Systemtime (), das auf einem Linux -System in clock_getTime (clock_monotonic, struct Timesspec *) wird.

Die Struct Timesspec hält Sekunden in einem Zeit_T, der ein 32-Bit-Wert zu sein scheint. Wenn es in der Nähe von Null anfängt, werden Sie wahrscheinlich nicht am Leben sein, wenn es sich wickelt.

Wenn Sie spezifischere Details benötigen, sollten Sie das Verhalten von clock_getTime (clock_monotonic) im Linux -Kernel untersuchen.

Andere Tipps

Wenn Sie bei einem Wickel direkt Uptimemillis anrufen, würde dies Ihren Nachattime -Anruf beeinflussen.

Ein langer Unterschriften in Java hat die Reichweite:

-9,223,372,036,854,775,807 to 9,223,372,036,854,775,807 (~9.2E18)

9,2e18 Millisekunden beträgt 292.277.266 Jahre. Wenn Sie an einer Weltraumsonde arbeiten, möchten Sie dies wahrscheinlich berücksichtigen. Andernfalls können Sie wahrscheinlich davon auskommen, dass es in Ihrem Leben nicht wickelt.

Der Kicker für mich ist, dass die Android -Dokumentation für Uptimemillis Ansprüche

Diese Uhr ist garantiert monoton. . .

Dann, kurz nachdem sie sagen, dass Uptimemillis aufgrund von variabler Verpackung zurückgesetzt wird - das genaue Gegenteil einer monotonischen Uhr!

Ich habe es für einen Dienst verwendet und habe es nie wieder zurückgesetzt. Ich würde wirklich annehmen, dass es nicht wird. Das Problem mit postAtTime() ist, dass es im Schlaf nicht aufgerufen wird (seitdem uptimeMillis() wird nicht aktualisieren). Wenn das ein Problem ist, würde ich eine andere Methode anwenden.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top