我在Firebase上的valueEvenListener存在問題。考慮這種情況:Firebase updatechildren vs setvalue
Firebase ref = new Firebase(Constant.BASEURL).child("myLists");
ref.addValueEventListener(myValueEventListener);
然後我嘗試使用updateChildren()更新其中一個列表值。
HashMap<String, Object> newEditionTimeHM = new HasMap<String, Object>
newEditionTimeHM.put("editionTimeStamp", ServerValue.TIMESTAMP);
ref.child(pushKey).updateChildren(newEditionTimeHM);
它更新,但是當我的聽衆抓住了更新,它崩潰報告「未能反彈鍵入」錯誤。
在我第二次嘗試時,我用新值創建了一個新的shoppinList對象,並使用setValue()來推送它。
newEditionTimeHM.put("editionTimeStamp", ServerValue.TIMESTAMP);
ShoppingList shoppingList = new ShoppingList("Owner unknown", newEditionTimeHM);
ref.child(pushKey).setValue(shoppingList);
當我的聽衆抓住它時,沒有問題被報告。
這裏有什麼不同?爲什麼我需要創建一個全新的對象來滿足聽衆?使用updateChildren()更高效嗎? 搜索this page作爲答案,但沒有找到它。
如果它「無法反彈類型」,則其中一種情況下的結果數據(onDataChange)可能與其他情況不同。檢查調試有什麼區別並得出結論。 – Wukash
@Wukash我查過了。這兩種方法應該完全一樣。證明這一點的是,當我檢查我的Firebase最終結果時,我使用第一種方法或第二種方法得到完全相同的結果。區別在於聽者如何反應。 –
是的我明白服務器上的值在最終結果中是相同的。我說的是你應該檢查聽衆方法有什麼不同,並採取相應的行動。我的意思是我們不能改變firebase庫的行爲,所以這是你唯一的選擇...... – Wukash