Firebase的addListenerForSingleValueEvent和addChildEventListener方法有什么区别?

时间:2016-04-13 13:12:45

标签: android firebase firebase-realtime-database

我正在使用firebase数据库查询。但是,当他们在那里写文档时,阅读文档时几乎没有什么困惑next()听众的addChildEventListener()会在每次添加孩子时调用。

我的情况是我要查询所有孩子。是应该使用上述方法还是使用onChildAdded()

他们也在文档中提到,听众应该像addListenerForSingleValueEvent

那样分离
  1. 这是什么意思?
  2. 是否会在db?
  3. 中添加新数据时一次又一次地调用

1 个答案:

答案 0 :(得分:2)

它们都是一样的,这取决于你将如何使用它。我个人认为 ChildEventListener 使用起来更灵活,因为您可以定义要对发生的操作做什么(例如添加,更改或删除子项时)。基于documentations,唯一的区别是 ValueEventListener 将执行“事情”。您定义了发生的更改(添加,更改或删除),因为它只有一个侦听器OnDataChange()。同时, ChildEventListener 有4个侦听器,onChildAdded()onChildChanged()onChildRemoved()onChildMoved(),因此您可以定义每个侦听器/操作中要执行的操作。

至于removeEventListener(),这是必要的,因为firebase是被动的,firebase主动监听给定节点(数据库引用)发生的事情。因此,当您删除侦听器时,它将无法侦听给定节点,因此removeEventListener()之后所做的任何更改都不会被firebase识别。是的, ChildEventListener ValueEventListener 将始终主动监听并在每次添加新数据时执行定义的操作(onDataChange()onChildAdded()

CMIIW并原谅我的英语。 的问候,

RM