Как в фоне сохранять данные, когда они меняются?

Есть такая проблемка: пользователь во время пользования приложения меняет какие-то данные и их нужно сохранять на сервер (я использую Firebase). Каждый раз везде вызывать функцию для сохранения данных, мне кажется, не самая лучшая идея.

Можно ли как-то сделать так, чтобы один фоновый процесс висел, и когда меняются какие-либо данные он выполнял их сохранение в Firebase? Если нет, то что можно сделать? Как вообще реализуется сохранение данных на сервер в приложениях?


Ответы (1 шт):

Автор решения: Sergei Buvaka

Я бы создал какую-то сущность, которая живет вместе с приложением, например Singleton может быть или какой-то более продвинутый жизненный цикл этой сущности.

Собственно эта сущность должна либо в себе хранить эти данные, либо иметь доступ к БД. Можно сделать реализацию паттерна Observer и всякий раз когда дергается тот или иной метод который потенциально может изменить данные, эта сущность будет проверять изменились ли они? Если да то отправлять на сервак.

Другой вариант, если вы не хотите отправлять запрос на сервак всякий раз когда что-то меняется, то можно создать какую-нибудь логику, которая хранит изменения локально и отправляет их на сервак раз в N минут. Но тут надо еще понимать, что если пользователь закроет приложение вам надо иметь возможность их отправить либо при закрытии либо отправить при повторном открытии.

→ Ссылка