我正在编写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函数?
答案 0 :(得分:0)
每5分钟调用一次API不是一个好习惯。您可以将用户位置更改事件从一台设备发送到服务器,然后在您的应用程序中进行检查。您可以使用侦听器。
或使用 .keepSynced 查询功能。
final Query query = firebase.child("node1").child("node2");
query.keepSynced(true);