RecycleView endless и swipe to refresh с точки зрения базы данных и удаленного api?
Я новичок в android разработке, помогите понять как должен работать алгоритм при подгрузке данных с api и хранением последних данных в бд.
Пишу приложение - новостная лента для своего сайта. Схема работы должна быть такая как в VK.
Каша в голове не проходит.
1) Допустим приложение уже однажды запускалось и получило список последних 10 новостей.
2) При повторном заходе (после убийства активити) надо догрузить новые новости и добавить к старым.
Я правильно понимаю что в данном случае надо выполнять запрос к api с условием where timestamp > last_insert_timestamp?
Тут может оказаться что данных будет очень много допустим за месяц простоя, то я в api могу вернуть ответ too much news, а в приложении очищаю таблицу в бд, и забираю из api только последние 10 новостей. Верно мыслю?
3) Спустя некоторое время (приложение запущено), я делаю с swipe to refresh. Я так понимаю надо делать также как в во 2м пункте.
4) Теперь допустим мы вышли из приложения. И снова зашли. Новых новостей не было в api.
Сколько новостей дожно загрузится в RecycleView из бд? все что были загружены ранее? или только 10, а дальше догружать по мере скролла?
При каких событиях надо будет чистить таблицу в бд? ведь так она может разростить до 1000 новостей, а надо допустим 30 максимум?
5) При скролле условие догрузки должно быть where timestamp < last_viewed_timestamp те последнее показанное на экране и если такие данные есть в бд то показать сначала их, и при след скролле уже брать из api?
6) Верно ли что всегда для сущностей, которые в данный момент показаны в разных частях приложения, должны существовать данные в бд, если таковые были?
RecycleView по умолчанию из дб подгружает только видимые пользователю +1 сверху и +1 снизу, так что тут можете не беспокоиться о памяти, просто сделайте нормальный кастомный адаптер
FoxInSox: отрисовка данных на экране происходит только того, что видно +1 сверху и +1 снизу для бесшовной анимации, остальные вьюхи подгружаются по мере пролистывания