android - FirebaseRecyclerAdapter 如何从数据库实时获取数据?什么是使用 addValueEventListener 或 addListenerForSingleValueEvent...?
问题描述
我正在使用 FirebaseRecyclerAdapter 从 firebase 数据库中获取数据,但在不同的布局中我使用 addValueEventListener 和 addListenerForSingleValueEvent 并且我知道在离开布局后应该删除 addValueEventListener(在 onDestroy() 中)。所以我的问题是在我离开 FirebaseRecyclerAdapter 的布局后如何从 FirebaseRecyclerAdapter 停止监听器......?
解决方案
如果您使用 Firebase-UI 中的适配器,您可以通过调用来阻止它侦听更改adapter.stopListening()
,通常是在您的活动onStop
方法中。
addValueEventListener
如果您使用or附加自己的侦听addChildEventListener
器,则确实需要在不再需要它们时将其删除。为此,您需要跟踪您添加的侦听器,然后调用removeEventListener
查询或引用..
因此,如果您添加了一个监听器:
ValueEventListener listener = new ValueEventListener() {
...
});
ref.addValueEventListener(listener);
然后,您可以使用以下命令将其删除(例如在 中onStop
):
remove.removeEventListener(listener);
请注意,添加的侦听addListenerForSingleValueEvent
器会在从数据库中获取第一个值后自动删除,因此您通常不需要在代码中删除这些侦听器。
推荐阅读
- javascript - Document.selector.innerHTML 仅在刷新页面后有效
- flutter - Fluttter 作为 Root 页面导航到页面
- amazon-dynamodb - Appsync“批量创建”解析器给出“映射模板”错误
- azure - azure front door - 为什么我们需要向后端池添加多个后端
- android - Pixel 2 设备中的临时文件夹
- node.js - 在 pg-promise 中编写子查询的好方法
- mysql - 单词末尾的未知字符
- jquery - 如何使用 Angular 更新 jquery 代码中的数据绑定?
- php - 如何将php变量放入css
- cypress - Cypress 测试在代码中间停止执行