0

これは私が今同期を実行する方法です:

 * get preference "timestamp" and save to variable TIMESTAMP
 * save current time to preference "timestamp"      (2)
 * query server side items with update time bigger than TIMESTAMP
 * for each item
 *      compare with local item's per item update_time
 *      if server side is newer
 *          update local
 *      else if local is newer
 *          set item update time to now             (1)
 *          upload
 *          save back
 *      else if equal
 *          do nothing
 * 

問題は、次回同期するときに、前回同期したアイテムが [何もしない] セクションに表示されることですが、私のアプリはモバイル アプリであるため、大量のデータの無駄があります。

アイテムの更新時刻を に設定することTIMESTAMPを考えましたが、2 つのクライアントが同時に同期している状況があり、アイテムの実際のアップロード時刻が更新時刻フィールドの時刻ではないため、同期がずれている可能性があると思います。 1 つのクライアントが 2 つの時間の間にサーバーをチェックした場合、この項目は見逃されます。

Google Tasks API を使用していますが、サーバー側の実装を変更できません。

助言がありますか?

4

1 に答える 1

0

タイムスタンプでこれを行うと、タイムゾーンが原因で問題が発生する可能性があります。おそらく、サーバー側の更新用に ID を定義し、アプリの現在の最大データ バージョン ID をサーバーのものと比較すると、より信頼性が高く効率的になります。

于 2012-11-17T10:37:16.003 に答える