kotlin 是否有办法阻止RealtimeDatabase的ValueEventListener阅读新的数据更改?

sdnqo3pr  于 2022-12-04  发布在  Kotlin
关注(0)|答案(1)|浏览(91)

因此,每当RealtimeDatabase发生更改时,ValueEventListener都会不断更改应用程序的数据。
我想创建一个按钮来阻止ValueEventListener使用新数据不断更新应用程序。如何做到这一点?谢谢。

uyto3xhc

uyto3xhc1#

因此,每当RealtimeDatabase发生更改时,ValueEventListener都会不断更改应用程序的数据。
是的,这是正确的。这就是实时监听器所做的。
我想创建一个按钮来阻止ValueEventListener使用新数据不断更新应用程序。
在相同的你已经添加了侦听器,你可以删除它。所以在代码中,它应该看起来像这样:

stopListenerButton.setOnClickListener {
    databaseReference.removeEventListener(valueEventListener);
}

还有另一种方法,你实际上不需要删除监听器。如果需要,你可以使用Query#addListenerForSingleValueEvent(@NonNull ValueEventListener listener):
为此位置的数据中的单个更改添加监听程序。此监听程序将使用该位置的数据值触发一次。

编辑:

以下是使用匿名对象创建侦听器的方法:

val listener = object : ValueEventListener {
    override fun onDataChange(snapshot: DataSnapshot) {
        TODO("Not yet implemented")
    }

    override fun onCancelled(error: DatabaseError) {
        TODO("Not yet implemented") //Never ignore potential errors!
    }
}

以下是附加侦听器的方式:

yourRef.addValueEventListener(listener)

下面是删除侦听器的方法:

yourRef.removeEventListener(listener)

相关问题