Ich habe ein Problem mit ValueEvenListener auf Firebase. Betrachten Sie die Situation:Firebase updatechildren vs setvalue
Firebase ref = new Firebase(Constant.BASEURL).child("myLists");
ref.addValueEventListener(myValueEventListener);
Dann versuche ich aktualisieren Sie eine der Listen Wert mit updateChildren().
HashMap<String, Object> newEditionTimeHM = new HasMap<String, Object>
newEditionTimeHM.put("editionTimeStamp", ServerValue.TIMESTAMP);
ref.child(pushKey).updateChildren(newEditionTimeHM);
Es aktualisiert, aber wenn meine Zuhörer das Update fängt, stürzt „failed abprallen zu geben“ reporting Fehler.
Bei meinem zweiten Versuch erstelle ich ein neues shoppinList-Objekt mit den neuen Werten, die ich möchte, und schiebe es mit setValue().
Wenn meine Zuhörer es fängt, wird kein Problem gemeldet.
Was ist der Unterschied hier? Warum muss ich ein völlig neues Objekt erstellen, um den Hörer zu befriedigen? Ist es nicht effizienter, updateChildren() zu verwenden? Gesucht this page für die Antwort, aber nicht gefunden.
Wenn es "nicht möglich ist, auf den Typ zu springen", dann sind die resultierenden Daten (onDataChange) in einem der Fälle wahrscheinlich anders als in anderen Fällen. Überprüfen Sie auf Debug, was ist der Unterschied und ziehen Sie Schlussfolgerungen. – Wukash
@Wukash Ich überprüfte. Diese beiden Methoden sollten genau das Gleiche tun. Beweis dafür ist, dass wenn ich mein Firebase-Endergebnis überprüfe, das genau dasselbe mit der ersten Methode oder der Sekunde bekomme. Der Unterschied besteht darin, wie der Zuhörer reagiert. –
Ja, ich verstehe, dass die Werte auf dem Server im Endergebnis gleich sind. Was ich gesagt habe, ist, dass Sie prüfen sollten, was der Unterschied in der Listener-Methode ist, und dementsprechend handeln. Ich meine, wir werden nicht in der Lage sein, das Verhalten der Firebase-Bibliothek zu ändern, also ist das deine einzige Option ... – Wukash