首页 > 解决方案 > 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)

我哪里错了?

另一件事是听者并不总是被唤起两次。它偶尔会发生

标签: androidfirebasefirebase-realtime-database

解决方案


为什么不听一次数据,使用addListenerForSingleValueEvent

listenerApp = ref5.addListenerForSingleValueEvent(object: ValueEventListener {
override fun onCancelled(p0: DatabaseError) {
Toast.makeText(this,"Error", Toast.LENGTH_LONG).show()
}
.....
.....
.....

推荐阅读