我正在使用FirebaseRecyclerAdapter从Firebase数据库获取数据 但在不同的布局中,我使用的是addValueEventListener和addListenerForSingleValueEvent,并且我知道应该在离开布局(在onDestroy()中)之后删除addValueEventListener。 所以我的问题是在离开FirebaseRecyclerAdapter的布局后,如何从FirebaseRecyclerAdapter停止侦听器??
答案 0 :(得分:0)
如果您使用的是Firebase-UI中的适配器,则可以通过调用adapter.stopListening()
(通常在活动的onStop
方法中)阻止适配器监听更改。
如果要将自己的侦听器附加到addValueEventListener
或addChildEventListener
,则确实需要在不再需要它们时将其删除。为此,您需要跟踪添加的侦听器,然后调用removeEventListener
on the query or reference。.
因此,如果您添加带有以下内容的侦听器:
ValueEventListener listener = new ValueEventListener() {
...
});
ref.addValueEventListener(listener);
您可以使用以下方法将其删除(例如在onStop
中):
remove.removeEventListener(listener);
请注意,添加了addListenerForSingleValueEvent
的侦听器在从数据库中获取第一个值后会自动将其自身删除,因此通常不需要删除代码中的那些侦听器。