2015-04-09 5 views
1

Мне нужно сохранить список контактов с моего веб-сервера в приложении для Android. Данные андроида - это всего лишь копия веб-сервера, и контакты не будут иметь внешних ключей к таблице и из нее. Я собираюсь периодически обновлять данные андроида. Но я задаюсь вопросом, какой метод будет лучше, чтобы обновить данные, я имею в виду:Android удаляет все строки или обновляет и удаляет старые?

  1. Удалить все строки из таблицы и вставить все данные с веб-сервера
  2. Обновление строки, которые соответствуют веб-сервер и удалить те, которые не были обновлены.

Какой метод лучше с точки зрения производительности?

ответ

1

Это то, что я делал раньше, когда я работал над проектом:

  • Во-первых, усечение всю таблицу и делать свежую хранение в базу данных в приложении зависит от размера Ваших данных синхронизируются. Очевидно, что удалить все, если размер невелик.
  • Решение, которое я использовал, содержало столбец на удаленном сервере (соответствующая таблица), который при удалении элемента контакта обновляется как удаленный с отметкой времени или просто говорит [удалено].
  • При синхронизации с телефоном убедитесь, что вы синхронизируете ТОЛЬКО те элементы, которые не удалены, или те, которые были обновлены/новые.Or
  • Синхронизировать контакты с полем JSON [удалено: истина], затем один раз в вашем коде Android, проверьте, удалось ли [deleted == true] и, следовательно, удалить этот элемент контакта из локального db. Вы просто просматриваете список при сохранении новых элементов.
  • Это означает, что вы будете сбрасывать только НОВЫЕ или ОБНОВЛЕННЫЕ элементы, а не измененные элементы не будут излишне тронуты. Это уменьшает количество транзакций, которые вы должны выполнить.

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

+0

Что делать, если я не могу вносить изменения на удаленный сервер? – Hank

+0

Это будет означать, что вы должны урезать свой локальный стол и сделать новое хранилище. Если, конечно, удаленные элементы не синхронизируются с сервером, есть флаг, указывающий, что они удалены. Если да, тогда просто проверьте флаг. – Eenvincible

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