【问题标题】:Android System.currenttimemillis differenceAndroid System.currenttimemillis 的区别
【发布时间】:2012-09-30 14:28:32
【问题描述】:

我正在开发聊天应用程序并保存 currentTimeMilis 。我得到了按 currenttimemilis 排序的新条目。当新条目来时 listview 更新。但是有些人的 currenttimemilis 值比其他人大.. 所以显示新条目是个问题

所以我无法获得新条目......我应该怎么做?

【问题讨论】:

  • 每个去中心化客户端是否生成currentTimeMilis?
  • currentTimeMillis 将取决于用户的系统时钟。不是每个人都能保持准确。您不能依赖它来比较设备之间的时间。
  • @RenatoLochetti 是的 .. currentTimeMilis 在每个去中心化客户端中生成 .. 它们可能是不同的国家或城市
  • @Simon 我可以将时钟设置为 GMT 以便只有我的应用程序正在运行吗?
  • @metin 正如大家所说,例如,每个用户都需要发送基于一台服务器的时间。这样您就能够以适当的方式对条目进行排序。

标签: android datetime format chat


【解决方案1】:

如果在不同的设备上收集计时,它们将始终因设备而异,因为它们彼此不同步。我只看到解决它的选项:

-如果消息是立即发送的,您可以将消息时间设置为消息到达的时间,因为它们将“可能”按照发送的顺序到达。 “可能”是因为某些用户的互联网连接速度可能较慢,这可能会延迟消息,但这对于大多数用途来说并不重要。

-如果消息被及时发送,您必须连接到时间服务器,从那里获取时间以在消息中设置。当然,您不需要为每条消息都连接,只需在应用程序启动时获取设备和服务器之间的时间差,然后为每条消息应用该差异。

-如果您的应用程序需要启用 GPS,您还可以从中获取准确时间。由于 GPS 使用 UTC,因此您需要针对您的时区应用更正。

--已编辑--

更多关于如何从时间服务器获取时差的详细信息:

1-在应用程序启动时,您连接到时间服务器以获取准确时间并将该时间与设备时间进行比较。您将时间差存储在一个变量中以供以后使用。

2-每次使用Cloud API发送消息时,获取设备时间,加上上面第1步得到的时间差,设置消息时间为这个值。如果您有不同国家的用户,您可能还需要应用与不同时区相关的更正。

祝你好运。

【讨论】:

  • 感谢回答,但我通过给每个客户端只记录 currentTimeMilis,我没有直接连接服务器.. 我正在使用云 API,API 没有给出任何服务器时间或类似的值。跨度>
  • 您可以从不同的服务器获取时间。请参阅有关该主题的问题:stackoverflow.com/questions/11737704/…。我正在编辑我的答案以添加 GPS 作为获取时间的解决方案。
  • 我的应用没有使用 GPS。我查看了您的链接,这是服务器的好方法,但我使用的是 API,而不是直接连接服务器
  • 您应该继续使用云 API 并添加代码以获取应用程序初始化的准确时间差。这样您就可以在使用 Cloud API 时为消息设置正确的时间。
  • 我不确定我是否完全理解你,但会得到一些东西.. 我会尝试,如果它有效,我会回答你的回复。谢谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-02-27
  • 1970-01-01
  • 2013-10-30
  • 2012-04-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多