Я постараюсь ответить на все ваши вопросы, ответив на более широкий вопрос: как я могу синхронизировать данные между веб-сервером и приложением для Android?
Синхронизация данных между вашим веб-сервером и приложением для Android требует наличия нескольких различных компонентов на вашем устройстве Android.
Постоянное хранение:
Вот как ваш телефон на самом деле хранит данные, которые он получает от веб-сервера. Один из возможных способов сделать это - написать свой собственный ContentProvider, поддерживаемый базой данных Sqlite. Достойное руководство для контент-провайдера можно найти здесь: http://thinkandroid.wordpress.com/2010/01/13/writing-your-own-contentprovider/
ContentProvider определяет последовательный интерфейс для взаимодействия с сохраненными данными. Это может также позволить другим приложениям взаимодействовать с вашими данными, если вы хотите. За вашим ContentProvider может быть база данных Sqlite, кэш или любой другой механизм хранения.
Хотя я бы определенно рекомендовал использовать ContentProvider с базой данных Sqlite, вы можете использовать любой механизм хранения на основе Java, который вы захотите.
Формат обмена данными:
Это формат, который вы используете для отправки данных между вашим веб-сервером и вашим приложением для Android. Два самых популярных формата в наши дни - это XML и JSON. При выборе вашего формата, вы должны подумать о том, какие библиотеки сериализации доступны. Я лично знаю, что есть фантастическая библиотека для сериализации json под названием gson: https://github.com/google/gson , хотя я уверен, что подобные библиотеки существуют для XML.
Служба синхронизации
Вам понадобится какая-то асинхронная задача, которая может получать новые данные с вашего сервера и обновлять мобильный контент, чтобы отражать контент сервера. Вы также захотите уведомлять сервер всякий раз, когда вы вносите локальные изменения в контент, и хотите отразить эти изменения. Android предоставляет шаблон SyncAdapter как способ легко решить этот шаблон. Вам нужно будет зарегистрировать учетные записи пользователей, и тогда Android выполнит за вас много магии и позволит вам автоматически синхронизироваться. Вот хороший учебник: http://www.c99.org/2010/01/23/writing-an-android-sync-provider-part-1/
Что касается того, как вы определяете, являются ли записи одинаковыми, обычно вы создаете элементы с уникальным идентификатором, которые сохраняются как на устройстве Android, так и на сервере. Вы можете использовать это, чтобы убедиться, что вы ссылаетесь на ту же ссылку. Кроме того, вы можете хранить атрибуты столбцов, например «updated_at», чтобы всегда получать самые свежие данные или случайно не записывать поверх вновь записанных данных.