2017-06-03 7 views
0

Es ist eine Chat-App. Ich erhalte Nachrichten, die auf der Recycleransicht des Chatrooms angezeigt werden. Dafür benutze ich FirebaseRecyclerAdapter. Ich erhalte die letzten 500 Nachrichten. Und dieser Chat-Raum hat über 20k Nachrichten. Wenn ich diese Aktivität lade, dauert es 6 Sekunden, um alle 500 Nachrichten zu laden.Verzögerung beim Abrufen von Daten aus der Firebase-Datenbank

Ich verfolgte die Zeit.

Die Verzögerung lag zwischen setAdapter und RecyclerAdapter Klasse.

Meine Nachrichtenstruktur in Firebase Datenbank

{ 
    "-KlQc42ici0_PRCBX7-V" : { 
    "message" : "message 1", 
    "timestamp" : 1496185853436, 
    "type" : "action", 
    "username" : "berkleef2", 
    }, 
    "-KlQmhcwK96j30FNoSs-" : { 
    "message" : "message 2", 
    "timestamp" : 1496188640000, 
    "type" : "action", 
    "username" : "atrickrodney16yahoocomat", 
    "zread" : true 
    }, 
    "-KlQmjSoucJD7uaHriOh" : { 
    "message" : "message 3", 
    "timestamp" : 1496188647083, 
    "type" : "text", 
    "username" : "atrickrodney16yahoocomat", 
    "zread" : true 
    } 
} 

Die Delay-Start nach setAdapter

mNewAdapter = new NewChatRecyclerAdapter(
        ChatMessageItem.class, 
        R.layout.message_item, 
        RecyclerView.ViewHolder.class, ref.limitToLast(500), Fusername, booIsPrivateChat, chatd, strOpponent); 
      messageList.setAdapter(mNewAdapter); 

Ich denke, es ist kein Problem mit der Adapter-Klasse ist. Also, wenn das Problem mit dem Laden von 500 Nachrichten ist. Was soll ich dann in diesem Fall zu tun laden Chat-Nachrichten ...

Antwort

0

Verwenden Firebase Offline-Feature-Set Persistenz aktiviert auf, so dass Sie Ihre Nachrichten speichern können

+0

Persistenz ist aktiviert. Aber wenn ich die App neu starte das gleiche Ergebnis ... – Bucky

0

Sie können sie in Stücke von 20 oder 50 Nachrichten holen ein Nacheinander.

+0

Wie kann ich das in FIrebase tun? – Bucky

+0

@Bucky überprüfen Sie dies: https://github.com/firebase/FirebaseUI-Android/pull/26 –

0

Sie können die Funktion keepsynced der Firebase-Datenbank in Ihrer Datenbankreferenz verwenden.

Verwandte Themen