gpt4 book ai didi

android - 删除 Firebase 监听器在 Android 上不起作用

转载 作者:搜寻专家 更新时间:2023-11-01 08:23:06 24 4
gpt4 key购买 nike

我正在向引用添加一个事件值监听器,当我想删除它时,它不起作用。

override fun onStart() {
super.onStart()
stateListener =dbReference.stateRef.addValueEventListener(object : ValueEventListener {

override fun onCancelled(p0: DatabaseError?) {
TODO("not implemented") //To change body of created functions use File | Settings | File Templates.
}

override fun onDataChange(snapshot: DataSnapshot?) {
//there is my functions
})
}

override fun onStop() {
super.onStop()
dbReference.stateRef.removeEventListener(stateListener)
Log.d("My_TAG", "$stateListener ")
}

这是我唯一要添加事件的地方。

修改后(还是不行)

override fun onStart() {
super.onStart()
stateListener = object : ValueEventListener {
override fun onCancelled(p0: DatabaseError?) {
TODO("not implemented") //To change body of created functions use File | Settings | File Templates.
}
//One of the phone got flipped
override fun onDataChange(snapshot: DataSnapshot?) {
}

}
dbReference.stateRef.addValueEventListener(stateListener)

}

override fun onStop() {
super.onStop()
Log.d("Life", "onStop")
dbReference.stateRef.removeEventListener(stateListener)
}

最佳答案

为了删除监听器,您首先需要创建它,然后将其附加到 DatabaseReference 对象。

val valueEventListener = ValueEventListener() {
//override fun onDataChange
//override fun onCancelled
}
dbReference.stateRef.addValueEventListener(eventListener)

因此,要移除监听器,您需要根据 Activity 的生命周期执行此操作,如下所示:

dbReference.stateRef.removeEventListener(valueEventListener);
  • 如果您在 onStart 中添加了监听器,则必须在 onStop 中将其删除。
  • 如果您在 onResume 中添加了监听器,则必须在 onPause 中将其删除。
  • 如果您在 onCreate 中添加了监听器,则必须在 onDestroy 中将其删除。

但请记住 onDestroy 并不总是被调用。

关于android - 删除 Firebase 监听器在 Android 上不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48263058/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com