2013-04-20 38 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