android - Android Firebase Eventlistener 在数据更改时调用了两次
问题描述
我有一个事件监听器连接到 firebase。但是事件侦听器在数据更改时被调用两次。我觉得我没有正确删除听众。有人可以指导这里是我的代码:
我在 onStart() 中有监听器,如下所示
ref5 = appRef.orderByChild("*****").equalTo(*****)
listenerApp = ref5.addValueEventListener(object: ValueEventListener {
override fun onCancelled(p0: DatabaseError) {
Toast.makeText(this,"Error", Toast.LENGTH_LONG).show()
}
override fun onDataChange(p0: DataSnapshot) {
// Do Something
}
})
监听器在 onStop() 中如下分离
if((this::listenerApp.isInitialized)&&(this::ref5.isInitialized)) ref5.removeEventListener(listenerApp)
我哪里错了?
另一件事是听者并不总是被唤起两次。它偶尔会发生
解决方案
为什么不听一次数据,使用addListenerForSingleValueEvent
:
listenerApp = ref5.addListenerForSingleValueEvent(object: ValueEventListener {
override fun onCancelled(p0: DatabaseError) {
Toast.makeText(this,"Error", Toast.LENGTH_LONG).show()
}
.....
.....
.....
推荐阅读
- django - Django - 如何创建新公司并将其链接到现有用户
- oracle - 使用 CTE 详细列出员工表上的层次结构
- url - 如何通过使用 BS4 和 Requests 进行谷歌搜索来获取完整的 URL
- javascript - 如何在flutter中将数据从父页面传递到webview页面?
- firebase - 调用 isTeacher() 函数时,我的 Stream 没有更新
- java - 无法从 cron 调度程序作业连接和获取 postgres 数据
- sql - 在包含相同 ID 的两行之间提取 ID 和不同的错误
- html - 如何在html css中将滚动条添加到父div?
- linux - VLAN之间的通信不起作用
- docker - 想在 docker 中用 Laravel 应用程序运行 elasticsearch,但它不起作用