java - 设备离线时如何获得正确的Android设备当前日期和时间

标签 java android date time

我创建了一个安卓应用,在这个应用中,用户可以保存一些任务。这些任务保存在设备中,当用户上网时,任务将同步到服务器。 我需要知道用户保存任务时的正确日期和时间。 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/

相关文章:

java - 如何使用 Java 将两个或多个多维数组合并为单个多维数组

java - SpEL @ConditionalOnProperty 字符串属性为空或 null

java - 将项目导出到JAR文件时,SourceDataLine不起作用

java - 如何创建具有 'Content-Type' 、授权 token 和正文的 Volley header ?

android - 使用 DownloadManager 在 RecyclerView 中显示下载进度

java - 无法解析 symbol ofPattern

java - 设计 : 2 jcomboboxes, 框 2 列表取决于框 1 中的选择,来自 XML 的数据

java - 屏幕锁定后相机卡住

java - 使用 JDBC 写入和读回 MySQL DATE 时毫秒值之间的差异

java - 为什么 Java Thread.sleep 或 Date.after() 在其他计算机上的功能不同?