如何不时在Firebase上获取数据?

时间:2016-09-29 03:25:11

标签: android firebase firebase-realtime-database

我不时在Firebase上提取数据,因为我正在追踪某人的GPS。有人在5分钟的间隔内保存他的位置,以便我可以跟踪他的GPS。但我的问题是我如何以5分钟的间隔从Firebase获取数据?

或者除此之外还有其他方法吗?

提前致谢。 :)

2 个答案:

答案 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