Android Firebase无需任何侦听器即可检索所有数据

时间:2018-09-12 15:45:02

标签: java android firebase firebase-realtime-database

当我从Android应用程序加载onStart事件而不运行任何Firebase侦听器时,如何从Firebase的实时数据库中检索所有数据值?

因为我不想运行任何侦听器,例如(“ ondataChange,childAdded,childRemoved等...”),所以我不需要它。

3 个答案:

答案 0 :(得分:2)

从Firebase文档中,侦听器的onDataChange方法在连接时会触发一次,然后在每次更改时都会触发。因此,是的,有一种无需事件即可获取数据的方法。但是,仅在使用侦听器时才会发生这种提取。

https://firebase.google.com/docs/database/android/read-and-write

收听值事件要在路径中读取数据并监听更改, 使用addValueEventListener()或addListenerForSingleValueEvent() 将ValueEventListener添加到DatabaseReference的方法。

您可以使用onDataChange()方法读取以下内容的静态快照: 内容位于事件发生时在给定路径上的内容。 一旦连接了侦听器,就会触发此方法,并再次触发 每当数据(包括子项)发生变化时。事件回调 传递了包含该位置所有数据的快照,包括 子数据。如果没有数据,则快照将在以下情况下返回false: 您调用exist(),并在其上调用getValue()时为null。

答案 1 :(得分:0)

如果不使用侦听器,则无法从Firebase实时数据库或Cloud Firestore获取数据。 Firebase中的所有内容都与侦听器有关,即使您是实时获取数据或仅获取一次数据,也需要在特定位置附加侦听器。没有它,您将无法获得它。

编辑:从Android中有关reading data的官方文档中,以下代码段展示了一个社交博客应用程序,该应用程序从数据库中检索帖子的详细信息:

ValueEventListener postListener = new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
        // Get Post object and use the values to update the UI
        Post post = dataSnapshot.getValue(Post.class);
        // ...
    }

    @Override
    public void onCancelled(DatabaseError databaseError) {
        // Getting Post failed, log a message
        Log.w(TAG, "loadPost:onCancelled", databaseError.toException());
        // ...
    }
};
mPostReference.addValueEventListener(postListener);

答案 2 :(得分:0)

虽然,现在在这里回复很晚,但是我选择仅在此处发布,而不是在此上创建另一个线程。

IMO,任何数据库的基本期望都是能够读取DB中可用的一组选定数据。不必附加侦听器还是编写自定义代码都没关系。

虽然我了解到实时DB的附加好处是它是事件驱动的,并且UI不需要等待用户启动获取数据的操作,但是如果没有这种方法,怎么可能无法检索数据有必要 !!我已经花了数小时寻找这种获取数据的方法。哦:(