我不时在Firebase上提取数据,因为我正在追踪某人的GPS。有人在5分钟的间隔内保存他的位置,以便我可以跟踪他的GPS。但我的问题是我如何以5分钟的间隔从Firebase获取数据?
或者除此之外还有其他方法吗?
提前致谢。 :)
答案 0 :(得分:4)
因此,如果有人每五分钟更新一次他/她的位置,那么你真的不必在你身边运行CounterDownTimer
来跟踪每五分钟一次的位置。因此,我认为您只需要在Firebase中为要跟踪的节点添加一个侦听器。
所以这是一个简单的实现。复制自Firebase Tutorial
Firebase ref = new Firebase("https://docs-examples.firebaseio.com/web/saving-data/fireblog/posts");
// Attach an listener to read the data at our posts reference
ref.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot snapshot) {
System.out.println(snapshot.getValue());
}
@Override
public void onCancelled(FirebaseError firebaseError) {
System.out.println("The read failed: " + firebaseError.getMessage());
}
});
我也在那里复制引号。所以你知道它符合你的目的。
只要将新数据添加到Firebase,就会调用此方法 参考,我们不需要编写任何额外的代码来实现这一点 发生。
因此,每次想要跟踪的人都会更新他/她的位置时,您将获得上述方法的回调并采取必要的措施。您真的不必实施轮询机制来进行跟踪。这就是Firebase实际运作的方式。
答案 1 :(得分:1)
No需要将Scheduler的任何服务用于从firebase检索数据。
由于Firebase提供实时数据库..每当您在Firebase数据库上推送数据时,侦听器都会触发,您可以检索数据。
实现以下Listener,使用它可以在数据库获得更新时检索数据。
DatabaseReference mDatabase =FirebaseDatabase.getInstance().getReference();
ValueEventListener yourModelListener = new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
// Get YOURMODEL object and use the values to update the UI
YourModel mModel = dataSnapshot.getValue(YourModel.class);
Log.e("Data : ",""+mModel);
}
@Override
public void onCancelled(DatabaseError databaseError) {
// Getting Post failed, log a message
Log.w(TAG, "loadPost:onCancelled", databaseError.toException());
}
};
mDatabase.addValueEventListener(yourModelListener);
有关听众的更多信息.. https://firebase.google.com/docs/database/android/retrieve-data