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

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

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

uyto3xhc

uyto3xhc1#

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

  1. stopListenerButton.setOnClickListener {
  2. databaseReference.removeEventListener(valueEventListener);
  3. }

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

编辑:

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

  1. val listener = object : ValueEventListener {
  2. override fun onDataChange(snapshot: DataSnapshot) {
  3. TODO("Not yet implemented")
  4. }
  5. override fun onCancelled(error: DatabaseError) {
  6. TODO("Not yet implemented") //Never ignore potential errors!
  7. }
  8. }

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

  1. yourRef.addValueEventListener(listener)

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

  1. yourRef.removeEventListener(listener)
展开查看全部

相关问题