2017-05-14 3 views
0

Ich benutze die Firebase Echtzeitdatenbank in meiner Android App. Ich möchte nur den letzten Eintrag in die Datenbank eingefügt und nicht eine ganze Datenbank sync.Ich mache folgendes.Abfragen bezüglich Firebase Echtzeitdatenbank

FirebaseDatabase.getInstance().getReference("reference").limitToLast(1).addValueEventListener(this); 

Hier ist, was ich nicht klar verstehen konnte:

1. Wenn ich ein limitToLast und fügen Sie einen Hörer macht es die gesamten Daten aus der Datenbank in die lokale Kopie herunterladen und gib mir einen Schnappschuss der letzte Eintrag oder lädt es nur den letzten Eintrag herunter?

2.Wenn ich den Listener entferne, stoppt die Synchronisierung zwischen der Echtzeitdatenbank und den lokalen Daten oder die Synchronisierung wird fortgesetzt, aber der onDataChange wird nicht aufgerufen?

3.Der Unterschied zwischen dem Entfernen des Value Event-Listeners und dem Offline-Gehen.

Antwort

0

Wenn Sie limitToLast() aufrufen, erstellen Sie eine Firebase-Datenbankabfrage. Eine solche Abfrage synchronisiert nur die übereinstimmenden Daten. In Ihrem Beispiel lädt sie nur das letzte Element herunter und ruft damit onDataChange auf. Wenn dann jemand einen neuen Gegenstand hinzufügt, ruft er erneut onDataChange mit dem neuen letzten Gegenstand auf.

Durch das Entfernen eines Listeners wird die Datensynchronisierung gestoppt.

Wenn Sie vorübergehend offline gehen, wird die Datensynchronisierung gestoppt, bis Sie goOnline() anrufen.

+0

Vielen Dank für die Antwort. Die Registerkarte Verbrauch in meiner Firebase-Konsole zeigt, dass ich ~ 2MB pro Stunde herunterladen, obwohl ich während des Zeitraums keine aktiven Listener habe. Eine Idee, warum das passieren könnte? –

+0

Es ist schwer, von solch begrenzten Informationen zu sagen. Wenn Sie jedoch die Registerkarte "Netzwerk" der Chrome-Entwicklertools überprüfen, können Sie den genauen Datenverkehr im Bereich "WS" (für Web-Sockets) sehen. Wenn Sie mehr Daten herunterladen, als der Suchanfrage entsprechen, haben Sie möglicherweise vergessen, [die Daten indizieren] (https://firebase.google.com/docs/database/security/indexing-data). In diesem Fall wird in der JavaScript-Konsole auch eine Warnung angezeigt. –

+0

Ich habe keine Daten indiziert, aber warum sollte das mehr Daten als nötig herunterladen? –

Verwandte Themen