0
SystemClock.uptimeMillis()

来自 Android SystemClock 的此调用将在“Maxes Out”之前重置为零

现在我用它来制作动画、运动等,下面是一个重置基本上会冻结我的应用程序的例子。

if (currentTime > frameTime + sequenceTime)
{
    frameTime = currentTime;
}

这里的问题currentTime是说 50 然后frameTime设置为 50 对吗?理想情况下currentTime会增加,SystemClock.uptimeMillis()但如果它重置?frameTime与如何修复此问题或重置currentTime所有对象的时间相比,当前时间变得非常小?

如果我有不同的对象有类似的困境,这只是一个小例子。

4

1 回答 1

0

根据我对文档的阅读,“正常运行时间”时钟仅在设备重新启动时才会重置。除非您的应用程序……以某种方式……设法在重新启动后继续运行,否则您不必担心时钟重置。

(另一方面,如果您的应用程序确实需要在重启后继续播放动画,那么也许您应该使用“currentTimeMillis”时钟。Android 文档SystemClock描述了替代方案。)


文档说这个“注意:这个值可能会偶尔重置(在它否则会环绕之前)。” .

这对我来说没有多大意义。时钟是毫秒时钟,并以 long 形式返回,因此您不会期望它会回绕。(2^64 毫秒是一个非常非常长的时间。)我能想到的唯一解释是某些设备使用 32 位硬件定时器来实现这个时钟......这有点蹩脚。

于 2012-08-07T01:39:03.833 回答