0

У меня есть три информационных экрана, таких как блоги Facebook в моем приложении. Приложения работают онлайн и офлайн. Пользователь может видеть данные offline. Данные кэшируются в базе данных.Каков наилучший способ синхронизации данных приложений Android с сервера?

Когда данные добавляются/обновляются/удаляются на сервер от активных пользователей.

Проблема заключается в том, я хочу, чтобы обновить все другие активные пользователи приложения с новыми данными, не затрагивая их работы и в короткие сроки. Короче говоря, хочу обновить его в фоновом режиме. Как я могу это достичь?

Я попытался ниже решений, но были некоторые проблемы:

1. После регистрации загрузки всех данных с сервера и хранить в базе данных для автономного использования.

Проблема с этим решением: Всегда показывать индикатор выполнения для кеширования данных, влияющих на плохой пользовательский интерфейс. пользователь будет раздражен.

2. Реализован фоновая обработка GCM Push уведомление (средства без отображения толчок уведомления пользовательского процесса его в фоновом режиме)

Проблему с этим решением:. Если уведомления пользовательских блоков, то приложение никогда не синхронизируется с новыми данными. добавлено/обновлено/удалено на сервере.

+1

Лучший способ - использовать SyncAdapter (хотя и предостережения о шаблоне шаблона лота). SyncAdapter работает с ОС Android, чтобы оптимизировать синхронизацию и может синхронизировать обе данные с базовым компонентом и с базовым компонентом, поэтому вы можете кэшировать последнее состояние, когда SyncAdapter запускается для обновления. Вы также можете использовать SyncAdapter для запуска синхронизации «now», а также (предположим), что пользователь нуждается в обновлении. –

+0

@ Лукас Кроуфорд впервые услышал о SycAdapter.I также проверить сайт разработчика Android, но я не могу понять эту концепцию.Итак, есть ли какие-либо объяснения/примеры, которые вы знаете. –

+1

В случае с FCM, почему ваши пользователи отключили уведомления, если они хотят, чтобы ваше приложение синхронизировалось? –

ответ

0

Ну, если данные находятся в Json, вы можете использовать Retrofit для сбора данных, его удивительно быстро.

После регистрации вы получите все данные с сервера и храните их в базе данных для использования в автономном режиме.

Решение: После того, как пользователь зарегистрирован показать прогресс в первый раз, в то время как ваши получать данные и обновления базы данных, после этого отображения данных из базы данных и постоянно обновлять данные в фоновом режиме.

Или вы можете просто сделать ProgressBar высоты 2dp около ActionBar, чтобы показать пользователю, когда данные обновляются в фоновом режиме, и пользователь может взаимодействовать с текущими данными, доступными из базы данных.

Вы можете использовать MaterialProgressBar или самостоятельно.

+0

, Спасибо за помощь, но я уже сделал это решение. –

+0

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

Смежные вопросы