Android uptimeMillis()将多长时间重置一次,它会影响Handler.posttime吗

Android uptimeMillis()将多长时间重置一次,它会影响Handler.posttime吗,android,timer,handler,uptime,Android,Timer,Handler,Uptime,该方法的说明如下: 返回启动后的毫秒数,而不是 计算深度睡眠的时间。 注意:此值可能会被重置 偶尔(在它之前) 否则,将其包裹起来) 这种情况发生的频率有多高?更重要的是,它会影响应该由执行的可运行程序吗?如果您在包装时碰巧调用了uptimeMillis,那么是的,它会影响您的开机后调用 Java中有符号的long具有以下范围: -9,223,372,036,854,775,807 to 9,223,372,036,854,775,807 (~9.2E18) 9.2E18毫秒是29227726

该方法的说明如下:

返回启动后的毫秒数,而不是 计算深度睡眠的时间。 注意:此值可能会被重置 偶尔(在它之前) 否则,将其包裹起来)


这种情况发生的频率有多高?更重要的是,它会影响应该由执行的可运行程序吗?

如果您在包装时碰巧调用了uptimeMillis,那么是的,它会影响您的开机后调用

Java中有符号的long具有以下范围:

-9,223,372,036,854,775,807 to 9,223,372,036,854,775,807 (~9.2E18)
9.2E18毫秒是292277266年。如果你正在研究一个太空探测器,你可能会考虑到这一点,否则你可能会认为它不会在你有生之年包装起来

对我来说,最重要的是Android的索赔文档

这只钟保证是自动的 单调的


之后不久,他们说,由于变量包装,正常运行时间将被重置-与单调时钟完全相反

我使用它进行服务,但从未看到它重置。我真的认为不会。
posttime()
的问题是它在睡眠期间不会被调用(因为
uptimeMillis()
不会更新)。如果这是一个问题,那么我会使用其他方法。

uptimeMillis调用在systemTime()中停止,在Linux系统上它会变成clock_gettime(clock_MONOTONIC,struct timespec*)

struct timespec在一个时间段中保存秒数,这个时间段似乎是一个32位的值。如果它开始计数接近零,那么当它结束时,你就不可能活着了


如果您需要更具体的细节,您应该调查Linux内核中clock_gettime(clock_MONOTONIC)的行为。

您假设本机方法的底层表示也是64位的,这可能是真的,也可能不是真的。