2016-11-14 5 views
1

Ich habe mich nur gefragt, ob es nicht notwendig ist, die FirebaseDatabase.getInstance() Instanz zu schließen, nachdem sie benutzt wurde oder welche Ressourcen auch immer sie benutzt haben.Firebase: Was passiert mit einer Datenbankverbindung nachdem es verwendet wurde?

Ich verwende die Instanz wie folgt.

String UID = FirebaseAuth.getInstance().getCurrentUser().getUid(); 
    DatabaseReference DB = FirebaseDatabase.getInstance().getReference(); 
    for (final Message M : Messages) { 
    if (!M.getSender().equals(UID) && !M.getLocal() && !M.getRead()) { 
     DatabaseReference r = DB.child("chat/messages/" + M.getMessageid()+"/read"); 
     r.setValue(true, new DatabaseReference.CompletionListener() { 
      @Override 
      public void onComplete(DatabaseError e, DatabaseReference dbr) { 
       if (e != null) { 
       System.out.println("Message Read could not be updated" + e.getMessage()); 
       } else { 
       System.out.println("Message Read updated" + M.getMessageid()); 
       } 
      } 
     }); 
    } 
    } 

Antwort

1

Wenn Sie das erste Mal mit der Firebase-Datenbank interagieren, wird eine Socketverbindung zwischen der App und den Firebase-Servern geöffnet. Von diesem Moment an geht der gesamte Datenverkehr zwischen der App und der Datenbank über denselben Socket.

Wenn für einen bestimmten Zeitraum keine aktiven Listener und keine Schreibvorgänge vorhanden sind, wird die Verbindung vom Firebase-Datenbankclient automatisch geschlossen. Natürlich wird die Verbindung dann wieder geöffnet, wenn Sie einen Listener anhängen oder erneut schreiben.

Wenn Sie eine feinere Kontrolle über die Verbindung wünschen, können Sie dies explizit durch Aufruf von goOffline() und goOnline() verwalten. Siehe https://firebase.google.com/docs/database/android/offline-capabilities#section-connection-state

Verwandte Themen