Реализация Android REST client и синхронизация с помощью gcm
Добрый день. Есть задача разработать андроид клиент для новостного сайта. Для оповещения о новых записях предполагается использовать gcm.
Предполагаемый алгоритм:
1. Запуск приложения, база пустая, делаем запрос к api получаем последние 20 записей, id с 1000 по 980, записываем в бд.
3. Прокручиваем listview к последней записи, делаем запрос на получение записей у которых id меньше 980, получаем записи с 979 по 959 записываем в бд.
3. Приходит gcm сообщение, или нажата кнопка обновить, делаем запрос к api, получаем записи у которых id > 1000, получаем записи с id 1001 по 1021 записываем в бд.
Возникает вопрос - как правильно вести себя в ситуации, когда предположим устройство было оффлайн в течении недели, за это время добавилось еще 1000 записей.
Устройство подключается к сети, получает send-to-sync сообщение, делает запрос к api на получение записей у которых id > 1021, в ответ должно прийти 1000 записей.
Интуиция подсказывает что загружать все 1000 записей не правильно, а нужно загрузить скажем последние 20, но тогда получится что в базе будут новости за сегодня, за прошлую неделю их не будет, а далее пойдут новости за позапрошлую неделю
И вопрос №2 - как правильно очищать старые записи, чтобы не допустить бесконечного роста бд?
Как же не будет, если у вас предусмотрен алгоритм получения предыдущих записей. Когда пользователь долистает 20 записей, ему придут предыдущие 20.
Немного поясню алгоритм работы:
перед тем как сделать запрос на получение записей с сервера, мы узнаем id последней записи в базе, а уже потом делаем запрос на получение записей с сервера, id которых больше id последней записи в базе. Здесь же все таки возникает проблемма бесконечного роста базы.