sqlite.
Появилась необходимость добавить синхронизацию со стороны сервера, но приложение всё ещё должно оставаться offline-first.
Вот я думаю, как лучше всего организовать эту самую синхронизацию, чтобы она была не навязчивой, умела в обработку ошибок и плохой сети и была простой в поддержке?
Пока в голове вертятся банальные:
- Добавить у каждой синхронизируемой таблицы поле sync BOOLEAN которое будет меняться в зависимости от ситуации.
или
- Держать отдельную сущность с очередью на синхронизацию, чтобы не смешивать данные синхронизации с данными самих сущностей.
Хочется послушать чужие мысли перед тем как садиться за реализацию. Может я не вижу какого-то простого и хорошего решения?
Или кто-то реализовывал подобное поведение и подскажет о подводных камнях.
Можно по аналогии с субд сделать отдельную таблицу журнал транзакций в котором сохранять историю изменения данных и по возможности последовательно передавать эти транзакции на сервер.
Я добавлял в такой ситуации колонку sync, отправка через periodic worker + попытка сразу при сохранении
А что там сейчас используется для periodic worker? А то задача появилась, лет 6 как надобности такой не было, а сейчас всякие доз моды итд
WorkManager каноничный сейчас.
Обсуждают сегодня