如何每5秒在Firebase上获取数据?

时间:2019-02-06 12:24:06

标签: android firebase firebase-realtime-database

我正在编写Android应用-用户可以跟踪其他人的位置。每个用户每5秒发送一次gps坐标,但是每次将位置保存在数据库中时都会获取有关其他用户的数据,因此firebase触发器onChildChanged在侦听器中起作用。我也想每5秒获取一次数据,否则会很昂贵。

假设我们的应用程序有三个用户:

用户A在5:00:03开始发送其位置。 用户B在5:00:06开始发送位置信息-比用户A晚三秒。

用户A在5:00:08更新坐标,用户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收到许多更新,每次更改任何用户的位置时,用户C的应用程序上的功能onChildChanged都会工作。

预期的行为将是这样的:

5:00:00-用户C开始收听。 5:00:05-用户C收到有关用户A位置的信息。 5:00:10-用户C收到有关用户A和用户B的信息。

因此,我需要每5秒接收一次数据,而不是每次更改数据。

我想知道,我必须每五秒钟添加一个新的侦听器,然后获取数据并删除侦听器吗?还是我需要使用Firebase函数?

1 个答案:

答案 0 :(得分:0)

每5分钟调用一次API不是一个好习惯。您可以将用户位置更改事件从一台设备发送到服务器,然后在您的应用程序中进行检查。您可以使用侦听器。

或使用 .keepSynced 查询功能。

final Query query = firebase.child("node1").child("node2");
query.keepSynced(true);