2017-10-10 3 views
1

J'ai écrit une application en utilisant la nouvelle base de données cloud firestore. Cela fonctionne très bien, sauf le fait que beaucoup de choses ne fonctionnent pas correctement en mode hors connexion bien que la persistance hors ligne soit activée. Par exemple, je procédez comme suit:addOnCompleteListener pas appelé hors ligne avec cloud firestore

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

      } 
     }); 

Cependant la méthode onComplete est jamais appelé en mode hors connexion. Je veux fermer l'activité et montrer du Snachbar une fois que cela arrive. Mais comme il ne le fait jamais, l'activité reste ouverte. J'utilise un émulateur de studio Android.

Merci

Répondre

3

opérations qui écrivent à la base de données sont définis pour signaler la fin une fois qu'ils ont réellement engagés au backend. Par conséquent, cela fonctionne comme prévu: en mode hors connexion, ils ne signalent pas l'achèvement.

Notez que les clients Firestore garantissent en interne que vous pouvez lire vos propres écritures même si vous n'attendez pas l'achèvement de la tâche de suppression.

Pour la plupart, cela signifie que vous ne devriez pas avoir à attendre que cette tâche soit terminée. Y a-t-il une raison particulière pour laquelle vous êtes intéressé à le faire?

+0

Salut @ Gilbert Gilbert. Je n'étais pas au courant que l'achèvement était destiné au backend. Je vais ajuster mon code. Merci. – edmond

+0

La même chose s'applique-t-elle à onSuccess et à Failure? – 34m0

+0

Oui. Aucun gestionnaire d'achèvement, de réussite ou d'échec ne sera appelé jusqu'à la fin de la tâche. La tâche ne se termine pas tant que l'écriture n'est pas validée dans le backend. –