Реализация Android REST client и синхронизация с помощью gcm

SQLite, Preferences, файлы, SD, Content Provider, XML, JSON
Ответить
eremeev.dev
Сообщения: 6
Зарегистрирован: 14 янв 2014, 01:01

Реализация Android REST client и синхронизация с помощью gcm

Сообщение eremeev.dev » 14 янв 2014, 01:11

Добрый день. Есть задача разработать андроид клиент для новостного сайта. Для оповещения о новых записях предполагается использовать 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 - как правильно очищать старые записи, чтобы не допустить бесконечного роста бд?

Lighter
Сообщения: 61
Зарегистрирован: 13 авг 2013, 16:39

Re: Реализация Android REST client и синхронизация с помощью

Сообщение Lighter » 15 янв 2014, 11:08

Можно посмотреть на готовые приложение, например, facebook, twitter и т.п. хоть это и приложения социальных сетей, но смысл похожий.
Например, в facebook может быть так, что некоторые записи, например, вчерашние в ленте присутствуют, но не полностью (нет картинок), а сообщения, опубликованные ещё раньше полностью закешированы. В этом случае, если пользователь пытается просмотреть вчерашние сообщения, то они подгружаются.

В twitter приложение загружается именно на том месте, где пользователь закрыл приложение (в новой версии почему-то не всегда так), например, вчера посмотрел новые сообщения, закрыл, сегодня открыл - список отображается на вчерашних сообщениях, а новые находятся выше в списке и ещё загружены не полностью.

Если приложение должно отображать новости, то нужно подумать, например над тем, интересны ли пользователю вчерашние новости и если не интересны, то стоит ли их загружать. Здесь больше подходит вариант с facebook: если пользователь всё-таки прокручивает список с новостями дальше (те, которые ещё не загружены), они подгружаются, если ещё дальше (к тем новостям, которые уже загружены), то они берутся из базы.

eremeev.dev
Сообщения: 6
Зарегистрирован: 14 янв 2014, 01:01

Re: Реализация Android REST client и синхронизация с помощью

Сообщение eremeev.dev » 17 янв 2014, 01:19

Спасибо за ответ. Думаю что лучше будет реализовать так как это сделано в твиттере - когда новых записей очень много, загружаются последние N, потом надпись "нажмите для загрузки твитов" затем более старые твиты.
Вложения
2014-01-03_12-00-03.png
2014-01-03_12-00-03.png (118.88 КБ) 2781 просмотр

Ответить