Хранение данных в БД Андроид
У Андроид приложения есть основной сервер, к которому подключена БД и периодически приложение синхронизирует данные с этим сервером-бд. Но в случае офлайн доступа, некоторые функции приложения также должны работать, поэтому необходимо хранить некоторые данные и локально.
Собственно вопросы:
- Как обычно хранят данные локально и удаленно с учетом синхронизации? В интернете встречаю связки SQLite + Room и Firebase. Объясните пожалуйста, какие подходы используются?
- Не могу понять процесс синхронизации между локальной и удаленной БД. Как я понимаю, локальная БД и удаленная не будут полностью совпадать. Как именно происходит сравнение?
Я обычно пишу бэк на Golang+Postgres. А вот с андроидом в разработке не встречался и поэтому не могу понять базовые вещи хранения и синхронизации данных.
Ответы (1 шт):
В целом данные хранить на устройстве можно тремя способами:
SharedPreference для простых данных.
База данных. Для хранения более сложных объектов.
Сохранять в файл. Если вам необходимо эти данные каким-либо образом шарить или оставлять на устройстве после удаления приложения.
Как это синхронизировать? Это зависит от того, каких целей вы хотите достичь. В можете прогонять все данные через БД или же сохранять только избранные задачи.
Синхронизация тоже лежит на вас. Да они могут быть рассинхронизированы с сервером, если к примеру устройство долго не было подключено к сети. Показывать ли их пользователю зависит от вашего приложения. Например можно показать пользователю фотки в его коллекции Google Photos, но показывать неактуальный счет в банковском приложении наверное не стоит.
Как это происходит обычно? Вы получаете данные от сервера и сохраняете их в БД, а потом уже само приложение дергает их из базы данных. Если вы что-то меняете вы должны это синхронно сохранять на сервер и в БД.
Тут очень трудно привести какие-то примеры, потому что все зависит от ваших задач. Надеюсь я смог вам немного помочь.