Добрый день. Есть задача разработать андроид клиент для новостного сайта. Для оповещения о новых записях предполагается использовать 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 - как правильно очищать старые записи, чтобы не допустить бесконечного роста бд?
Реализация Android REST client и синхронизация с помощью gcm
-
eremeev.dev
- Сообщения: 6
- Зарегистрирован: 14 янв 2014, 01:01
Re: Реализация Android REST client и синхронизация с помощью
Можно посмотреть на готовые приложение, например, facebook, twitter и т.п. хоть это и приложения социальных сетей, но смысл похожий.
Например, в facebook может быть так, что некоторые записи, например, вчерашние в ленте присутствуют, но не полностью (нет картинок), а сообщения, опубликованные ещё раньше полностью закешированы. В этом случае, если пользователь пытается просмотреть вчерашние сообщения, то они подгружаются.
В twitter приложение загружается именно на том месте, где пользователь закрыл приложение (в новой версии почему-то не всегда так), например, вчера посмотрел новые сообщения, закрыл, сегодня открыл - список отображается на вчерашних сообщениях, а новые находятся выше в списке и ещё загружены не полностью.
Если приложение должно отображать новости, то нужно подумать, например над тем, интересны ли пользователю вчерашние новости и если не интересны, то стоит ли их загружать. Здесь больше подходит вариант с facebook: если пользователь всё-таки прокручивает список с новостями дальше (те, которые ещё не загружены), они подгружаются, если ещё дальше (к тем новостям, которые уже загружены), то они берутся из базы.
Например, в facebook может быть так, что некоторые записи, например, вчерашние в ленте присутствуют, но не полностью (нет картинок), а сообщения, опубликованные ещё раньше полностью закешированы. В этом случае, если пользователь пытается просмотреть вчерашние сообщения, то они подгружаются.
В twitter приложение загружается именно на том месте, где пользователь закрыл приложение (в новой версии почему-то не всегда так), например, вчера посмотрел новые сообщения, закрыл, сегодня открыл - список отображается на вчерашних сообщениях, а новые находятся выше в списке и ещё загружены не полностью.
Если приложение должно отображать новости, то нужно подумать, например над тем, интересны ли пользователю вчерашние новости и если не интересны, то стоит ли их загружать. Здесь больше подходит вариант с facebook: если пользователь всё-таки прокручивает список с новостями дальше (те, которые ещё не загружены), они подгружаются, если ещё дальше (к тем новостям, которые уже загружены), то они берутся из базы.
-
eremeev.dev
- Сообщения: 6
- Зарегистрирован: 14 янв 2014, 01:01
Re: Реализация Android REST client и синхронизация с помощью
Спасибо за ответ. Думаю что лучше будет реализовать так как это сделано в твиттере - когда новых записей очень много, загружаются последние N, потом надпись "нажмите для загрузки твитов" затем более старые твиты.
- Вложения
-
- 2014-01-03_12-00-03.png (118.88 КБ) 2781 просмотр