首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >ChildEventListener和ValueEventListener Firebase接口有什么不同?

ChildEventListener和ValueEventListener Firebase接口有什么不同?
EN

Stack Overflow用户
提问于 2016-11-23 20:14:07
回答 3查看 17K关注 0票数 18

文档中说它们都会监听Firebase数据库位置的变化。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-11-24 08:20:13

它们做的几乎是一样的事情,尽管ChildEventListener有时可能更灵活:使用ChildEventListener,您可以为4个操作(onChildAddedonChildChangedonChildMovedonChildRemoved)指定不同的行为,而ValueEventListener只提供onDataChanged

此外,ChildEventListener在子节点的位置提供了DataSnapshots (数据的不可变副本),而ValueEventListener提供了整个节点的DataSnapshot。

票数 26
EN

Stack Overflow用户

发布于 2016-11-23 20:33:54

只有当特定值发生变化时,才会触发ValueEventListener,但ChildEventListener不仅会侦听该节点的值,还会侦听树的所有子节点。假设你有一个节点,它有一个子节点。ValueEventListener将在此节点更改时触发,但ChildEventListener也将在新的子值更改时触发。文档上说,你应该谨慎使用ChildEventListener -它可能会被触发很多次。

票数 9
EN

Stack Overflow用户

发布于 2018-05-27 10:01:50

这是两者之间的主要区别。

如果您的数据库包含以下记录:

代码语言:javascript
复制
  -LDU4T1buanVuJrpOYxW
      message:"hi stack"
      user: "john"
  -LDasdfa1buanVuJrpOYxW
      message:"hi john"
      user: "stack"

1)在新条目上:

  • a)ChildEventListener.onChildAdded将被调用一次,但数据快照将仅添加一个
  • b) ValueEventListener.onDatachange将被调用一次,但数据快照将使everybody

2)由于a)在childeventlistener中获取新记录是

代码语言:javascript
复制
 public void onChildAdded(DataSnapshot dataSnapshot, String s) {
    Map<String,String> map =(Map) dataSnapshot.getValue();
    String message = map.get("message").toString();

因为b)在ValueEventListener中获取新记录是

代码语言:javascript
复制
    public void onDataChange(DataSnapshot dataSnapshot) {
            for (DataSnapshot data : dataSnapshot.getChildren()) {
               .... loop until end
                Map<String,String> map = (Map)data.getValue();
                String message = map.get("message").toString();

例如,如果你不关心别人在ValueEventListener中删除第一个会发生什么,你总是会得到通知,但在ChildEventListener中,你只有在覆盖onChildRemoved时才会得到通知。

所以这取决于你想做什么。例如在聊天应用程序中。您将只关心新的消息,您不希望再次在聊天室中重新插入所有消息。

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40764292

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档