【发布时间】:2017-08-13 12:25:18
【问题描述】:
问题是System.currentTimeMillis() 返回错误的毫秒数,不同的时间范围主要在未来,有时长达 6 个月,但从几秒到几个月不等。
出现这种情况的设备是Android 5.1.1上的平板电脑型号Huawei M2-A201W,内核版本为:**3.10.74-gdbd9055**
我的第一个假设是 NTP 不知何故弄乱了时间,但我有成千上万的平板电脑,其中一些没有网络连接,没有 SIM 卡,所以没有 GSM/3G/4G .
我使用System.currentTimeMillis() 保存在表的列中,以了解何时在本地 sqlite 数据库中创建行。
这种异常情况在我使用的平板电脑上经常发生(每次System.currentTimeMillis() 呼叫的 30%)。
【问题讨论】:
-
它是否每次都返回错误的时间,或者只有大约 30% 的调用?如果它大部分都有效,你可以连续调用它 10 次,然后从返回的值中猜测哪个是正确的(大部分应该是这样的)。 (但答案看起来更有趣,这是次要选项)。
-
不是每次,而是 30% 的时间,如果我使用 sqlite 数据库生成时间戳,我们怎么知道它实际上正在工作,那么 Sqlite 实际使用什么本机方法?
-
当您遇到某种错误时,最好的解决方法是尝试一下。做一些应用程序(如果你不能用当前修改的应用程序轻松测试),它将随机插入一些数据到数据库中(可能将它与一些
for延迟循环交错进行一些计算,与任何计时器不同步-基于(如delay(msec)),然后检查数据,如果存储的时间戳增长均匀并且与当前时间相关,或者数据中有一些跳跃。如果真的是30%,那么你应该在几千轻松记录。 -
我会试试你的解决方案。此外,由于设备处于离线状态,我正在尝试获取 GPS 时间。
-
Stack Overflow 用于编程问题。你有什么问题?
标签: android linux ntp huawei-mobile-services