2016-01-13 132 views
2

我有一个问题,即onChildAdded()被调用没有理由,而且它正常工作时的一些东西添加的onChildAdded回调函数被调用,但没有什么一加

这是听众:

comment = new Firebase(MY_URL).child("Comments").child(channel); 
    childEventListener = new ChildEventListener() { 
     @Override 
     public void onChildAdded(DataSnapshot dataSnapshot, String s) { 
      if (dataSnapshot != null && dataSnapshot.getValue() != null) { 
         try { 
         comment = new ObjectMapper().writeValueAsString(commentObject); 
         System.out.println("onChildAdded"+comment +" s"+s); 
         } catch (JSONException e) { 
          e.printStackTrace(); 
         }catch (JsonProcessingException e) { 
         e.printStackTrace(); 
        } 
      } 

     } 
     //the other call backs 
    }; 
    comment.addChildEventListener(childEventListener); 

这是初始化代码,其中i添加监听器:

@Override 
    public void onResume() { 
     super.onResume(); 
     setupFireBaseListener(channel); 
    } 

这是我洁具除去监听器:

@Override 
    public void onDetach() { 
     super.onDetach(); 
     comment.removeEventListener(childEventListener); 
    } 

注意,我把这种方法上的应用程序类:

Firebase.setAndroidContext(this); 

这是我所打印的数据:

onChildAdded{"name":"osama raddad","comment":"hi","user_id":"11"} s-K7qX32GeNLEvY4IDtnn oldData 
onChildAdded{"name":"osama raddad","comment":"how","user_id":"11"} s-K7qX3UCI6vlcS5kfBdG oldData 

我的火力客户端SDK版本2.2.1是

+0

你知道当监听被调用时会发生什么吗?也许数据被更改或删除?如果你愿意,你可以添加这个改变的代码吗? –

回答

2

onChildAdded在您连接后不会为每个添加的孩子开火,但它也会为每个现有的孩子启动

下面是来自Firebase文档。

...的onChildAddedevent is triggered once每个现有子 ,然后再每一个新的子项被添加到指定路径的时间。

如果您只需要新添加的项目,则需要为每个项目添加时间戳,然后执行orderByChild("timestamp").start(currentTimestamp)查询。