gpt4 book ai didi

UTC 中的 Android 时间同步

转载 作者:行者123 更新时间:2023-12-04 23:55:33 28 4
gpt4 key购买 nike

我有一个严重依赖当前时间戳的应用程序。目前,当用户提交请求时,我使用 System.currentTimeMillis() 获取 UTC 的当前时间戳。虽然这工作正常,但当用户开始在他们的设备上操纵他们的 Date/Time 并导致时间戳不准确时,它就会成为一个问题。

那为什么要在客户端呢?为什么不直接在服务器上处理呢?好吧,我的应用程序需要离线工作。当无法连接到 Internet 时,我的所有请求都会被推送到 jobQueue 中。在这些情况下,我必须知道用户执行操作的原始时间,所以如果我在 4:02pm 提交请求,但由于网络问题,服务器只会在 7 左右收到它:30pm,服务器必须知道我在 4:02pm 发送了请求。

现在我考虑了哪些选项?

  1. 在用户登录后,我将设备时间与服务器时间同步并将该时间存储在本地。如果在用户登录时发生任何用户操作,我将有一个 BroadcastReceiver 监听任何 Date/Time 操作的 Intent ,然后存储偏移量,以便无论何时用户提交请求,我会计算同步时间和偏移量,以确保时间戳准确。
  2. 在后端完成一个服务器同步 api,并在我的应用程序中设置一个服务,以持续与服务器时间同步并寻找任何偏差,同时监听任何用户操作。
  3. 使用推送通知并监听下游的时间同步调整,同时监听任何用户操作。
  4. 我还可以利用 NTP 服务器与我的设备同步时间。

我不完全确定哪个是最佳的(假设我已经列出了所有可能的解决方案)。如果还有其他我没有想到的解决方案,请告诉我。

附言如果我碰巧使用 BroadcastReceiver 来监听设备上的任何日期时间操作,我该如何计算其中的偏移量?

最佳答案

我问这个问题已经有一段时间了,而且还没有任何优雅的答案,所以经过一些研究和反复试验后,我决定采用 NTP 路线,经过一番挖掘,我发现一个不错的库,可以为您完成所有事情。

可以在这里找到:

NTP TRUE TIME

感谢这些让生活变得更轻松的人。

您必须只与 ntp 服务器同步一次,从那时起,他们将为我们计算 Delta,为我们提供准确的 UTC,而不管 SystemClock 时间如何。

关于UTC 中的 Android 时间同步,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40839185/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com