我创建了一个安卓应用,在这个应用中,用户可以保存一些任务。这些任务保存在设备中,当用户上网时,任务将同步到服务器。
我需要知道用户保存任务时的正确日期和时间。 Calendar.getInstance()
或 new Date()
等代码会返回设备时间,如果设备时间不正确,任务将保存错误的日期。此应用程序可以离线工作很重要。并且由于此应用程序的业务,用户有可能故意更改设备时间。
最佳答案
因此,我最终得出这样一种情况,即每次设备重启时,用户至多只连接一次互联网。
我尝试在用户启动(BOOT_COMPLETED BroadcastReceiver
)或网络状态更改(CONNECTIVITY_CHANGE 和 WIFI_STATE_CHANGED BroadcastReceiver
)时连接到 NTP 服务器,然后存储该日期和 SystemClock.elapsedRealtime()
在数据库中。之后,每当我想要获得正确的日期时,我只需获取新的 SystemClock.elapsedRealtime()
并计算此值与数据库中的 elapsedRealtime 值的差异,并将该差异添加到我存储的日期在数据库中。
关于java - 设备离线时如何获得正确的Android设备当前日期和时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33449737/