Я пишу приложение для 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?