Задать вопрос
@n4d3sh1k

Как правильно реализовать синхронизацию бд android приложения с сервером?

Есть сервачок-монолит на Spring, приспособленный к работе с веб и андроид приложениями. Хочу сделать приложение на андроид со своей бд и её синхронизацией с сервером. Смысл такого подхода в том, что пользователь сможет работать с приложением оффлайн (если он заблаговременно вошёл в аккаунт), и когда появится сеть, то приложение автоматически синхронизирует данные, изменённые пользователем, с сервачком.
Только я не нашел какой-то четкой и ясной информации в интернетах (наверное не там искал) как это правильно реализовать и пришёл за помощью сюда.
  • Вопрос задан
  • 86 просмотров
Подписаться 1 Средний Комментировать
Пригласить эксперта
Ответы на вопрос 3
Steel_Balls
@Steel_Balls
Используй архитектуру MVVM (MVP устарела), шаблон проектирования Repository для кэширования данных, Retrofit и Room.
Ну и да, в манифесте не забудь прописать android.permission.ACCESS_NETWORK_STATE и в коде повесить слушателя на подключение/отключение от сети
Ответ написан
Комментировать
Fragster
@Fragster
помогло? отметь решением!
можно посмотреть в сторону https://couchdb.apache.org/ и https://pouchdb.com/
Ответ написан
Комментировать
@AndreyPMI
Тут нужно разделить задачу на этапы- во первых, синхронизация при запуске приложения. Необходимо определить, есть ли интернет и если есть, то: как вариант , отправить на сервер локальную бд, получить синхронизированную и сохранить у себя. Во вторых, работа по синхронизации в фоне, тут поможет ворк менеджер, который будет раз в какое то время ( важно делать не слишком часто) проводить синхронизацию в фоне. Важно учитывать, что в фоне тебе нужно только отправлять бд, а получать лишь при работе пользователя. Я бы предложил раз в день, но можно и реже, например, когда пользователь ставит телефон на зарядку (но не чаще раза в день). Если бд хранит много данных, подумай, как уменьшить объем передачи, например, можно разделить записи, которые уже есть на сервере (пометка на актуальность) и которые получены в момент отсутствия интернета.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы