Я использую: Retrofit 2, Active Android(ORM) и SQLite
Сервер написан на Java + Spring
Приложение должно работать так:
1. При доступном интернете - спарсить JSON и положить их в SQLite (в память телефона) и вывести их в RecyclerView
2. При доступном интернете - если произойдут какие-то изменения на сервере, например добавятся товары или категории, то приложение должно скачать измененные/добавленные товары или категории.
3. Если интернета нет - все данные из SQLite (в памяти телефона) должны вывестись в RecyclerView
У меня возникла проблема с двумя последними пунктами: в интернете не нашел нормальной документации где объясняется как заставить active android работать в оффлайн режиме, что для этого нужно делать, а также как сверять есть ли изменения на сервере.
Подскажите пожалуйста где можно почитать на счет этой синхронизации с сервером и оффлайн режимом телефона, может быть есть какой-то пример кода. Может быть есть какая-то документация для новичков?
Ответ
То, что вы описывает это Offline-first. Т.е. вся инфа по умолчанию доступна без интернета, отображается из локального хранилища а при соединении с сервером полученная от него инфа лишь обновляет оную в локальном хранилище.
Как вы будете хранить инфу локально и как обновлять её с сервера - отдельный вопрос. Локально можно в БД хранить (SQL или NoSQL), а обновлять либо переодически делая запрос на сервер или с сервера рассылая пуши на девайсы с самой инфой или с целью побудить девайс эту инфу от сервера самостоятельно получить.
Лично я у себя использую Realm - NoSQL БД с уведомлениями в рантайме об изменениях выборки. Изначально всё из неё отображаю, а когда что-то на сервере поменялось, то оно пишется в БД и БД автоматом вызывает метод перерисовки RecyclerView
Комментариев нет:
Отправить комментарий