Android: локальное кеширование данных с REST сервиса. Как реализовать?
В учебных целях пишу простенький мессенджер для андроида.
Такие данные как список чатов, список контактов, история чата и информация о юзере приложение получает с сервера через REST.
Исследовав вопрос REST библиотек для андроида выбрал Retrofit как самую удобную и адекватную по быстродействию.
Но на данном этапе потребовалось еще и кешировать все это дело, то есть сохранять полученные данные в локальной базе, так чтобы если пользователь запустит приложение без доступа к сети у него отображались данные, которые были получены в прошлый раз.
Например что имеем сейчас:
Пользователь заходит в приложение будучи подключенным к интернету, приложение выгружает с сервера список чатов и кидает их на активити.
Если закрыть приложение и зайти в него уже БЕЗ соединения - на экране данные будут отсутствовать, пока не появится возможность выгрузить их из сети.
Как хотелось бы:
Если интернет есть приложение выгружает данные и кидает их на вьюху, но помимо прочего записывает в базу. При обновлении данных база также обновляется.
Если интернета нет - подгружаются данные из базы.
Интересует что использовать для реализации и как вообще организовать работу всего этого.
Смотрел в сторону RoboSpice, но там вроде немного не то что нужно.
При чем тут орм? Вы не понимаете элементарного кеширования в базу? Сейчас у вас: Грузите список чатов => отображаете в адаптере. С кешем это выглядит так: Через Loader грузите курсор -> на основе курсора строите список -> пытаетесь подключиться к инету и загрузит список чатов -> Если не получаете список чатов то отобразится то что уже загружено, если получаете то пересохраняете в бд через ContentResolver -> Loader сам распознает что данные изменились и вам нужно вызвать CursorAdapter#swapCursor. Вам сложно открыть гугл и для начала прочитать то о чем написано выше?
anyd3v: Вот, это именно то что я хотел услышать в качестве ответа. Нет, мне не сложно открыть гугл и почитать об этом, но читая про это вразнобой в голове образовывалась только каша, а собрать из неё какой-то алгоритм действий не удавалось. Теперь картина видится гораздо лучше и я понимаю в каком направлении двигаться.
Осталось лишь определиться с тем как удобнее всего хранить в базе объекты с композицией, то есть с несколькими уровнями вложенности.