Android: Как выводить с помощью ORM данные из базы SQLite без интернета?

195
20 сентября 2017, 10:28

Я использую: Retrofit 2, Active Android(ORM) и SQLite.
Сервер написан на Java + Spring

Приложение должно работать так:
1. При доступном интернете - спарсить JSON и положить их в SQLite (в память телефона) и вывести их в RecyclerView
2. При доступном интернете - если произойдут какие-то изменения на сервере, например добавятся товары или категории, то приложение должно скачать измененные/добавленные товары или категории.
3. Если интернета нет - все данные из SQLite (в памяти телефона) должны вывестись в RecyclerView

У меня возникла проблема с двумя последними пунктами: в интернете не нашел нормальной документации где объясняется как заставить active android работать в оффлайн режиме, что для этого нужно делать, а также как сверять есть ли изменения на сервере.
Подскажите пожалуйста где можно почитать на счет этой синхронизации с сервером и оффлайн режимом телефона, может быть есть какой-то пример кода. Может быть есть какая-то документация для новичков?

Answer 1

То, что вы описывает это Offline-first. Т.е. вся инфа по умолчанию доступна без интернета, отображается из локального хранилища а при соединении с сервером полученная от него инфа лишь обновляет оную в локальном хранилище.

Как вы будете хранить инфу локально и как обновлять её с сервера - отдельный вопрос. Локально можно в БД хранить (SQL или NoSQL), а обновлять либо переодически делая запрос на сервер или с сервера рассылая пуши на девайсы с самой инфой или с целью побудить девайс эту инфу от сервера самостоятельно получить.

Лично я у себя использую Realm - NoSQL БД с уведомлениями в рантайме об изменениях выборки. Изначально всё из неё отображаю, а когда что-то на сервере поменялось, то оно пишется в БД и БД автоматом вызывает метод перерисовки RecyclerView.

READ ALSO
Парсинг всего текста из html

Парсинг всего текста из html

Возникла необходимость написать свой краулер on PythonНа данном этапе мне необходимо распарсить весь текст из html и удалить лишнее

167
Получить данные DOM из объекта

Получить данные DOM из объекта

При нажатии на кнопку «Добавить статью», появляется форма с двумя полями: Заголовок статьи и Описание статьи и кнопкой закрытьПосле нажатия...

263
Как оформить html-страницу в виде Java-класса?

Как оформить html-страницу в виде Java-класса?

Задание лабораторной работы - оформить сайт-визитку (одна или несколько страниц)Страница должна быть реализована с использованием CSS и JS

258