Как обращаться к серверу каждые 5 секунд?

263
22 апреля 2017, 22:38

Дело в том что до сегодняшнего дня я для общения с сервером использовал Volley и каждые определенные время отправлял запрос. Но теперь мне предстоит решить не стандартную задачу. То есть, нужно проверять данные пришли или нет с сервера, отправил собеседник сообщение или нет. Каждые 5 секунд проверять базу, отправлять запросы даже если нет сообщений мне кажется не правильно, да еще где то читал что этот вариант больше жрет аккумулятор.

Вопрос: Есть ли решение, которое меньше использует аккумулятор, и проверяет сервер в реальном времени? Если да, скиньте ссылку на туториалы...

Answer 1

В своём учебном проекте я делаю так:

У меня есть на сервере и клиенте WebSocket'ы(На сервере веб-сокет от Jetty, а на клиенте от OkHttp), они общаются между собой через JSON (Использую Gson).

На клиенте в веб-сокете каждое новое сообщение добавляется в очередь (Queue). Есть ещё пару методов, которые возвращают размер очереди и извлекают объект из неё.

Затем в нужном классе при помощи RxJava и метода interval, я проверяю кол-во сообщений, и если сообщений больше чем 0, я их все извлекаю.

Возможно реализация выглядит глупа, но работает как надо.

P.S. Сокет создаётся единожды при старте приложения в Service А в нужном классе я подключаюсь к нему.

READ ALSO
Xamarin vs. iOS / android

Xamarin vs. iOS / android

Понимаю, что вопрос не совсем технический, но интересно мнениеУ меня сейчас около 8 лет разработки на С#

295
Ошибка Could not initialize class org.apache.tools.zip.ExtraFieldUtils при запуске нового проекта в Android Studio

Ошибка Could not initialize class org.apache.tools.zip.ExtraFieldUtils при запуске нового проекта в Android Studio

Создал новый проект в андроид студии, но он создаётся с ошибкойВот что пишет в консоли грейдла:

369
Проблема с enum в java

Проблема с enum в java

В БД есть две таблички t_statuses и t_operatorsВ первой значения (-1 - BANNED, 0 - OFFLINE, 1 - ONLINE), во второй собственно операторы, статус которых - внешний ключ...

297
Как сделать выбраный пункт в Select активным

Как сделать выбраный пункт в Select активным

Я сделал выпадающий список меню элемента select и установил определенную категорию со значением value="4"

196