2013-04-20 37 views
1

我正在处理一个应用程序,如果24小时过去了,需要与网络服务器同步。每个交互都记录在数据库中,以便我可以跟踪上次同步时间,因此当应用程序启动时,它会检查数据库以查看是否需要同步。到目前为止,我没有找到合适的时钟来进行可靠和一致的时间测量,时钟可以是临时的(测量正常运行时间),或者它们的日期可以由用户改变,所以是否有任何好的策略处理这些问题?可靠的时钟在Android的好策略?

+0

如果用户改变他们的设备时钟并导致早期(或晚期)同步,世界会爆炸吗? – 2013-04-20 21:13:25

+1

总而言之,否:用户将始终能够更改时钟。您唯一真正的追求是在自上次签入后超过24小时的时间内提出请求并在* server *端进行检查。 – 2013-04-20 21:17:23

+0

@MarcB我正在考虑其他应用程序方面的这个问题,也许有必要得到自同步以来的确切时间,这将是非常困难的。 – 2013-04-21 09:17:10

回答

2

在软件工程中,这是人人共有的的常见问题,唯一正确答案是:不是没有网络调用。测量时间是你不能普遍采用的。时区,不同的用户时钟,夏令时,所有这些东西发生。或者使用System.elapsedRealTime()以及类似引导监听程序或询问服务器时间是什么(这实际上是一个不好的的想法,因为它可以)失败b)可怕的慢c)花费用户的钱和d)浪费电池。 您可以做的另一件事是在特定的时间每天自动同步(如凌晨4点)。这对用户更改时间或DST没有帮助,但在99%的情况下都能正常工作。用户通常不会改变他们的时间:)

+0

是的,我想最糟糕的情况是,如果用户决定篡改日期,应用程序将最多等待另外24小时,然后再次同步。感谢您的建议。 – 2013-04-21 00:01:47

+0

标记为已解决吗? – meredrica 2013-10-13 10:58:34