2016-07-29 5 views
1

Ich habe setPersistenceEnabled auf true gesetzt und verwende einen addValueEventListener und innerhalb dieser eine onDataChange-Methode. Lädt meine App die Daten jedes Mal, wenn diese Methode aufgerufen wird, immer vom Server herunter oder wird die App die Daten aus dem Cache abrufen, sofern verfügbar? Wenn ich offline bin, bin ich sicher, dass die Daten aus dem Cache stammen.Firebase Realtime Database addValueEventListener

#askFirebase 

Antwort

3

Wenn Sie einen Hörer mit addValueEventListener() befestigen und die Daten in den lokalen Festplatten-Cache zur Verfügung, die onDataChange() Methode wird sofort mit den Daten aus dem Cache feuern.

Der Firebase-Client registriert sich dann beim Server für Aktualisierungen der Daten. Jedes Mal, wenn es aktualisierte Daten empfängt, ruft es erneut onDataChange() auf.

Wenn Sie also veraltete Daten in Ihrem lokalen Festplattencache haben, erhalten Sie möglicherweise zwei Aufrufe von onDataChange() in "schneller" Reihenfolge: eine mit den veralteten Daten und die zweite mit den neuesten Daten. Es gibt derzeit keine Möglichkeit zu sehen, ob die Daten veraltet sind oder nicht.

Die einzige Zeit, wenn dies wirklich eine knifflige Situation schafft, ist, wenn Sie addListenerForSingleValueEvent() verwenden. Da Sie nur das erste Ereignis onDataChange() dort erhalten, können Sie nur die veralteten Daten erhalten. Dies ist einer der Gründe, weshalb wir empfehlen, Festplattenpersistenz nicht mit einwertigen Ereignis-Listenern zu kombinieren.