【发布时间】:2013-04-27 18:00:56
【问题描述】:
我在我的应用程序中创建了一个独立的时钟。时钟作为活动中的不同线程运行,从我设置的基本时间开始。我使用设置时钟时的 uptimemillis 和当前 uptimemillis 之间的差异来更新时钟。但 uptimer 可以由 Android 重置,并且在 Android 重启时会重置。
我只想知道正常运行时间计时器是否已重置,以了解时钟是否仍然可靠。
怎么做?
【问题讨论】:
-
uptimeMillis()是long。它可以在环绕之前处理 9,223,372,036,854,775,807 毫秒。那是一段相当长的时间,所以除非你有证据表明它在那之前显着环绕,否则我不会担心这个问题。如果你确实有这样的证据,我很乐意看到。 -
也许您应该只使用实时时钟来获取绝对时间,而不是使用系统正常运行时间?如:
new Date() -
@CommonsWare 我读过Android可以出于内部原因重置它......但是正常运行时间计时器在重启时重置。因此,我该如何“解决”这个问题?
-
“但是正常运行时间计时器在重新启动时被重置”——正确。 “因此,我该如何“解决”这个问题?” -- 停止使用
uptimeMillis(),因为您假设它的含义不是自上次重新启动以来的毫秒数。 “如果我使用实时时钟,如果用户更改它,我无法知道它”——收听ACTION_TIME_CHANGED广播。 -
广播看起来是一个很好的解决方案...developer.android.com/reference/android/content/…。或者,您可以考虑将 RTC 与 Uptime 时钟进行比较……那么您至少可以知道其中是否只有一个发生了变化,而不是两者都发生了变化。
标签: java android clock reboot uptime