2017-10-10 8 views
1

Ich habe eine App mit der neuen Cloud Firestore-Datenbank geschrieben. Es funktioniert gut, außer dass viele Dinge im Offline-Modus nicht reibungslos funktionieren, obwohl die Offline-Persistenz aktiviert ist. Zum Beispiel ich folgendes tun:addOnCompleteListener nicht offline mit Cloud Firestore aufgerufen

ref.delete().addOnCompleteListener(new OnCompleteListener<Void>() { 
      @Override 
      public void onComplete(@NonNull Task<Void> task) { 
       if (task.isSuccessful()) { 
        //Do something 
       } else { 
        //Do another thing 
       } 

      } 
     }); 

jedoch die onComplete Methode wird nie als offline bezeichnet. Ich möchte die Aktivität schließen und eine Snachbar zeigen, sobald dies passiert. Aber wie es nie geschieht, bleibt die Aktivität offen. Ich benutze Android Studio Emulator.

Dank

Antwort

3

Operationen, die in die Datenbank geschrieben werden definiert Abschluss signalisieren, wenn sie tatsächlich an das Backend begangen haben. Dadurch funktioniert es wie vorgesehen: Offline signalisieren sie keine Beendigung.

Beachten Sie, dass die Firestore-Clients intern garantieren, dass Sie Ihre eigenen Schreibvorgänge auch dann lesen können, wenn Sie nicht auf die Beendigung der Aufgabe von delete warten.

In den meisten Fällen bedeutet dies, dass Sie nicht warten müssen, bis diese Aufgabe abgeschlossen ist. Gibt es einen bestimmten Grund, warum Sie daran interessiert sind?

+0

Hallo @ Gil Gilbert. Mir war nicht bewusst, dass die Fertigstellung für das Backend gedacht war. Ich werde meinen Code anpassen. Vielen Dank. – edmond

+0

Gilt das auch für onSuccess und bei Fehler? – 34m0

+0

Ja. Kein Abschluss-, Erfolgs- oder Fehlerbehandler wird aufgerufen, bis die Aufgabe abgeschlossen ist. Die Aufgabe wird erst abgeschlossen, wenn der Schreibvorgang für das Back-End festgelegt wurde. –

Verwandte Themen