1.手机系统时间存在的问题
Android系统或者Java程序在打时间戳时,经常使用System.currentTimeMillis(),如果直接用这个函数来打时间戳,会存在潜在的问题,即无法保证单调性和顺序性,对于这个函数,Java官方解释是这样的
currentTimeMillis
public static long currentTimeMillis()
Returns the current time in milliseconds. Note that while the unit of time of the return value is a millisecond, the granularity of the value depends on the underlying operating system and may be larger. For example, many operating systems measure time in units of tens of milliseconds.
See the description of the class Date for a discussion of slight discrepancies that may arise between "computer time" and coordinated universal time (UTC).
Returns:
the difference, measured in milliseconds, between the current time and midnight, January 1, 1970 UTC.
currentTimeMillis是1970年1月1日到当前时间经过的毫秒数,这个时间依赖系统日期,其底层实现就是直接获取系统日期,不管是家用机还是服务器,亦或是手机,系统日期一般都不准确,需要校准机制,比如NTP协议,考虑这样的情况,系统时钟走

本文探讨了Android系统中使用currentTimeMillis()获取时间戳存在的问题,包括系统时间依赖NTP校准可能导致的时间跳跃和单调性丢失。为解决此问题,建议结合System.nanoTime()来获取更精确且具有顺序性的时序信息,以确保时间戳的正确性。在手机设备上,由于温度变化和基站时间不精确,此类问题尤为突出。
最低0.47元/天 解锁文章
1554

被折叠的 条评论
为什么被折叠?



