2015-08-18 5 views
0

Я пытаюсь внедрить SyncAdapter в sync данные между клиентом (Android-устройство) и сервером с использованием sqlite. Те же данные будут совместно использоваться разными устройствами.Как узнать, являются ли данные на сервере более новыми, чем данные на устройстве, или наоборот?

Обновление: Как только конкретная запись будет обновлена ​​на одном клиентском устройстве, она будет перенесена на сервер. В этот момент обновленная запись также должна быть синхронизирована с сервером на другие подключенные устройства.

Теперь, когда мы отправляем запрос синхронизации с других подключенных устройств, каков наилучший способ узнать, какая запись обновляется на сервере?

+0

Клиентское приложение должно извлекать обновленные записи и новые записи только не в полную таблицу. – JohnC

ответ

1

Вот что я хотел бы сделать для достижения этой цели:

  • Во-первых, рассмотреть возможность использования временных меток. Вот как это могло бы работать;
  • В таблице базы данных (удаленно) есть столбец updated_at, который, как только вы синхронизируете свежие данные, вы должны установить для него новую временную метку.
  • В вашем андроидном коде вы можете просто сохранить lastSyncTime в своих предпочтениях, а затем сравнить с тем, что вы получаете от своего столбца сервера.

Вы можете легко вытащить значение из конечной точки /last_sync/, чтобы увидеть, если sync_time изменилось.

Сравнивая две метки времени, вы можете решить, хотите ли вы синхронизировать новые данные или сохранять старые, пока не будут синхронизированы новые.

Надеюсь, это поможет. Удачи!

+0

Благодарим за быстрый ответ. Но если в таблице есть тысячи записей (удаленный сервер), нам приходится сравнивать метку времени в тысячу раз. Это сравнение будет увеличиваться по мере увеличения количества записей на сервере. Есть ли лучший способ сделать это? – JohnC

+0

Если вы запустите SQL-запрос/запрос с чем-то вроде «где updated_at> lastSync, это должно сделать это. – Eenvincible

Смежные вопросы