2016-01-13 105 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)查詢。

相關問題