Список пользователей в реальном времени в приложении для Android

Я создаю chat app в android. Приложение будет иметь 100-150 пользователей одновременно (в реальном времени). Данные пользователей поступают с http веб-сервера. Я пытаюсь создать список пользователей в реальном времени, который будет динамически изменяться по мере изменения данных пользователей с сервера. Есть следующий способ решить эту проблему: 1. Я мог бы использовать опрос http каждые 2 минуты для получения данных с сервера. Есть два способа опроса First. Используйте класс Timertask. Second Создайте класс обслуживания и используйте Диспетчер сигналов тревоги. какой метод лучше с точки зрения производительности???? Позже я узнал, что опрос — это настоящий убийца батареи. Есть ли какой-либо другой метод, кроме опроса для решения списка пользователей в реальном времени?? Какие методы современные приложения, такие как facebook, используют для изменения данных в режиме реального времени?


person NeiL    schedule 29.10.2014    source источник


Ответы (3)


Почему это необходимо? Я не буду делать это вот так. У вас может быть служба, которая получает данные с вашего сервера и сохраняет их в локальной базе данных. Когда вы начнете службу, это ваш выбор! Я бы не стал качать каждые 2 минуты или что-то в этом роде. Может быть, вы можете реагировать на действия пользователей. Так что, если он откроет приложение или нажмет на список чатов или что-то в этом роде.

Если вам это действительно нужно напрямую, вы можете использовать GoogleCloudMessaging, но я действительно думаю, что это ужасная идея!

person user3621165    schedule 29.10.2014
comment
Да, я мог бы использовать pull для обновления. Может быть, я буду, но я пытаюсь найти лучший подход. - person NeiL; 29.10.2014

По моему мнению, вместо использования опроса с регулярными интервалами вам следует использовать GCM. Всякий раз, когда происходит какое-либо изменение пользователей, вы просто отправляете push-уведомление в свое приложение, а затем в своем BroadCastReceiver просто нажимаете веб-API, чтобы получать последние каналы.

person Mukesh Rana    schedule 29.10.2014

SyncAdapter/AccountManager полезен для вашего варианта использования. Authenticator (который вызывает AccountManager за кулисами) может обрабатывать аутентификацию для вашего приложения. SyncAdapter может выполнять периодическую синхронизацию с сервера на локальное хранилище данных. Вам не придется реализовывать его самостоятельно с помощью AlarmManager. Для примера кода адаптер синхронизации

Ваш сервер будет работать с SyncAdapter без особых изменений. Единственные различия будут в вашем клиенте, например, вместо вызова методов выборки данных сервера в AlarmManager вы вместо этого вызовете их в onPerformSync() вашего класса, который расширяет SyncAdapter.

Надеюсь это поможет.

person Ashish Tamrakar    schedule 29.10.2014