這里說的同步是:手機App內有一個sqlite的數據庫,以便他離線時可以增加一些數據,例如拍的照片以及寫的文字等.當聯網時,自動把離線時寫的東西提交給服務器同時,如果用其他客戶端改變的舊內容或刪除了舊文章,那么在App里也做出對應的修改和刪除,保證本地App與服務器始終是一模一樣的目前采取的方案是按最后修改時間來做處理,如果ID相同的項目,始終以修改時間最新的那個作為標準,如果App本地數據庫出現有服務器不存在的項目,那么就把本地的刪除.
2 回答

呼如林
TA貢獻1798條經驗 獲得超3個贊
要判斷誰是【最新版本】并不容易。在網絡上,你不能保證時鐘是同步的。
目前我改成所有更新到服務器的數據,都用服務器時間來更新時間戳,然后將該時間返回給客戶端,客戶端修改自己數據的時間跟服務器上一樣

阿波羅的戰車
TA貢獻1862條經驗 獲得超6個贊
自己沒有動手試過,但是也許可以試一下類似Git的同步方式?commit和update分離。 服務器端記錄所有的更新/提交信息,客戶端記錄從上一次的同步時間(如果有的話)后最終的修改記錄(添加/刪除應該是一樣的),然后客戶端把修改記錄發給服務器(同一賬戶的多客戶端可以通過消息隊列的方式排隊進行更新),當然,只有最后一個commit后發送更新請求的客戶端能獲得全部更新
當然,遺留問題就是指向同一個文件的不同修改造成的沖突的問題,沒想好該怎么處理……要不和git一樣提醒用戶自己手動解決?
- 2 回答
- 0 關注
- 494 瀏覽
添加回答
舉報
0/150
提交
取消