Question

I have a independent clock created in my application. The clock runs as a different thread in the activity, starting from a base time set by me. I update the clock using the difference between the uptimemillis when I set the clock, and the current uptimemillis. But the uptimetimer, can be reset by Android, and is ever reset when Android reboot.

I only want to know if the uptime timer is reset, to know if the clock is still reliable.

How?

Was it helpful?

Solution

According to the documentation you can use SystemClock.elapsedRealtime()

elapsedRealtime(): Returns milliseconds since boot, including time spent in sleep.

This value will only be reset when the device is restarted. Listen to the broadcast boot_complete and you will know when that is.

The problem with the updateMillis() is clearly noted in the documentation:

uptimeMillis(): Returns milliseconds since boot, not counting time spent in deep sleep. Note: This value may get reset occasionally (before it would otherwise wrap around).

From how I understand the documentation, by using elapsedRealtime your users cannot manipulate your counter.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top