我正在开发一个需要与网络服务器同步的应用程序,如果已经过了24小时。每次交互都记录在数据库中,以便我可以跟踪上次同步时间,因此当应用程序启动时,它会检查数据库以查看是否需要同步。
到目前为止,我发现没有合适的时钟可用于可靠和一致的时间测量,时钟要么是临时的(测量正常运行时间),要么用户可以更改它们的日期,所以有没有好的交易策略有这些问题吗?
答案 0 :(得分:2)
这是软件工程中所有人的常见问题,唯一正确的答案是:没有网络电话。
测量时间是你无法普遍做到的。时区,不同的用户时钟,夏令时,所有这些东西将发生。要么使用System.elapsedRealTime()
之类的东西,比如启动监听器,要么问服务器时间是什么(这实际上是坏的想法,因为它可以a)失败b)可怕的慢c)成本用户钱和d)浪费电池。
您可以做的另一件事是在特定时间(例如凌晨4点)自动同步。这对用户更改时间或夏令时没有帮助,但它可以在99%的情况下使用。用户通常不会经常改变他们的时间:)