Java 当android设备处于脱机状态时,如何获取正确的当前日期和时间

Java 当android设备处于脱机状态时,如何获取正确的当前日期和时间,java,android,date,time,Java,Android,Date,Time,我创建了一个android应用程序,在这个应用程序中,用户可以保存一些任务。这些任务保存在设备中,当用户联机时,任务将同步到服务器。 我需要知道用户保存任务的正确日期和时间。类似于Calendar.getInstance()或new Date()的代码返回设备时间,如果设备时间不正确,则使用错误的日期保存任务。此应用程序脱机工作非常重要。而且,由于该应用程序过于繁杂,用户可能会改变设备的使用时间。因此,我最后给出了一个场景,在这个场景中,用户最多只需在每次设备重新启动时连接一次互联网。 当用户启

我创建了一个android应用程序,在这个应用程序中,用户可以保存一些任务。这些任务保存在设备中,当用户联机时,任务将同步到服务器。
我需要知道用户保存任务的正确日期和时间。类似于
Calendar.getInstance()
new Date()
的代码返回设备时间,如果设备时间不正确,则使用错误的日期保存任务。此应用程序脱机工作非常重要。而且,由于该应用程序过于繁杂,用户可能会改变设备的使用时间。

因此,我最后给出了一个场景,在这个场景中,用户最多只需在每次设备重新启动时连接一次互联网。


当用户启动(
BOOT\u COMPLETED BroadcastReceiver
)或网络状态更改(
CONNECTIVITY\u CHANGE和WIFI\u STATE\u changed BroadcastReceiver
)时,我尝试连接到NTP服务器,然后将该日期和
SystemClock.elapsedRealtime()
存储在数据库中。之后,每当我想知道正确的日期时,我都会得到新的
SystemClock.elapsedRealtime()
计算此值与数据库中的elapsedRealtime值的差值,并将差值添加到我存储在数据库中的日期。

您需要一个服务器和一个端点,该端点可以返回正确的日期,因为设备只能给您设备时间。@Varundroid因此,在这种情况下,如果用户脱机,则无法保存任务