首页 > 解决方案 > FirebaseRecyclerAdapter 如何从数据库实时获取数据?什么是使用 addValueEventListener 或 addListenerForSingleValueEvent...?

问题描述

我正在使用 FirebaseRecyclerAdapter 从 firebase 数据库中获取数据,但在不同的布局中我使用 addValueEventListener 和 addListenerForSingleValueEvent 并且我知道在离开布局后应该删除 addValueEventListener(在 onDestroy() 中)。所以我的问题是在我离开 FirebaseRecyclerAdapter 的布局后如何从 FirebaseRecyclerAdapter 停止监听器......?

标签: androidfirebasefirebase-realtime-databaseandroid-recyclerview

解决方案


如果您使用 Firebase-UI 中的适配器,您可以通过调用来阻止它侦听更改adapter.stopListening(),通常是在您的活动onStop方法中。

addValueEventListener如果您使用or附加自己的侦听addChildEventListener器,则确实需要在不再需要它们时将其删除。为此,您需要跟踪您添加的侦听器,然后调用removeEventListener查询或引用..

因此,如果您添加了一个监听器:

ValueEventListener listener = new ValueEventListener() {
   ...
});
ref.addValueEventListener(listener);

然后,您可以使用以下命令将其删除(例如在 中onStop):

remove.removeEventListener(listener);

请注意,添加的侦听addListenerForSingleValueEvent器会在从数据库中获取第一个值后自动删除,因此您通常不需要在代码中删除这些侦听器。


推荐阅读