Как получать данные на Firebase каждые 5 секунд? - PullRequest
0 голосов
/ 06 февраля 2019

Я пишу приложение для Android - пользователи могут отслеживать местоположение других людей.Каждый пользователь отправляет свои GPS-координаты каждые 5 секунд, но выборка данных о других пользователях происходит каждый раз, когда местоположение сохраняется в базе данных, поэтому триггер firebase запускает функцию onChildChanged в слушателе.Я хочу получать данные каждые 5 секунд, иначе это будет дорого.

Предположим, у нас есть три пользователя с моим приложением:

Пользователь A начинает отправку своего местоположения в 5:00:03.Пользователь B начинает отправку своего местоположения в 5:00:06 - на три секунды позже, чем пользователь A.

В 5:00:08 пользователь A обновляет координаты, пользователь B делает то же самое в 5: 00: 11.

Пользователь C начал прослушивать смену местоположения в 5:00:00.В 5:00:03 - получить обновление о пользователе A. В 5:00:03 - получить информацию о пользователе B. 5:00:08 - получить обновление о пользователе A. 5:00:11 - получить информацию о пользователе B.

Через 11 секунд пользователь C получает много обновлений, функция onChildChanged в приложении пользователя C работает каждый раз, когда изменяется местоположение любого пользователя.

Ожидаемое поведение будет следующим:

5: 00: 00 - пользователь C начал слушать.5:00:05 - пользователь C получает информацию о местоположении пользователя A.5:00:10 - пользователь C получает информацию о пользователе A и пользователе B.

Поэтому мне нужно получать данные каждые 5 секунд вместо каждого изменения данных.

Мне интересно, я должен добавлять нового слушателя каждые пять секунд, затем получать данные и удалять слушателя?Или мне нужно использовать функции Firebase?

1 Ответ

0 голосов
/ 06 февраля 2019

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

Или использовать .keepSynced функция запроса.

final Query query = firebase.child("node1").child("node2");
query.keepSynced(true);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...