2017-02-06 15 views
0

У меня есть приложение и веб-сайт. Одной из особенностей моего веб-сайта/приложения является то, что пользователи могут следить за другими пользователями (так же, как Twitter).Синхронизация данных между приложением и веб-сервером

Прямо сейчас, я настроил его так, чтобы при входе пользователя в приложение приложение также запрашивало (с веб-сервера) всех пользователей этого пользователя (используя Retrofit), а затем заполняет навигационный ящик с каждым из этих пользователей (для легкого доступа к их профилям).

Однако, если пользователь следует за кем-то другим через веб-сайт (а не приложение). Это проблема, потому что приложение только извлекало всех пользователей, которых человек следит при входе в систему. Поэтому, если пользователь открывает приложение (уже подписанное с предыдущего сеанса), список пользователей, за которыми они следуют, будет устаревшим.

Итак, мои вопросы: как и когда следует обновлять список пользователей, за которыми они следуют? Как другие приложения обычно обрабатывают такие вещи?

+0

Вы всегда должны получать подписчиков с веб-сервера, если хотите сохранить синхронизацию. –

+0

. Один из способов использования SyncAdapter - это надежное стандартное решение, но может быть излишним для вашего простого использование случай. https://developer.android.com/training/sync-adapters/creating-sync-adapter.html Также см. http://stackoverflow.com/questions/25887118/how-to-develop-an-offline-first- native-android-app – Sangharsh

ответ

0

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

+0

Кажется, что это будет массивная утечка батареи. –

+0

Я не думаю, что это слишком сильно разрядит батарею. Но вы можете просто использовать обработчик в post execute (в asynctask) –

0

Вы можете достичь желаемой функциональности с помощью ниже способов:

  1. Long пулы (не рекомендуется)
  2. Sockets (Sockets.io)
  3. GCM или FCM
0

Вы можете просто использовать Firebase Realtime Database, который может очень легко синхронизировать все ваши данные на всех платформах (веб-сайт/приложение). Вы можете указать security rules в базе данных, чтобы управлять уровнями доступа для всех ваших пользователей. Ссылка: Firebase Realtime Database