2017-10-10 75 views
1

我一直在使用新的雲端Firestore數據庫編寫應用程序。除非啓用脫機持久性後很多事情在脫機時不能順利運行,否則它工作得很好。 比如我做到以下幾點:addOnCompleteListener不會與雲端防火牆脫機呼叫

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

      } 
     }); 

然而onComplete方法不會被調用的時候離線。一旦發生這種情況,我想關閉活動並顯示一些Snachbar。但從未如此,該活動仍然開放。我正在使用android studio模擬器。

感謝

回答

3

操作是寫入到數據庫中定義,一旦他們實際上已經提交到後端完成信號。因此,它按預期工作:在離線狀態下,它們不會發出完成信號。

請注意,Firestore客戶端在內部保證您可以讀取自己的寫入內容,即使您不等待完成刪除任務。

大多數情況下,這意味着您不需要等待此任務完成。有沒有什麼特別的原因讓你有興趣這樣做?

+0

Hi @Gil Gilbert。我不知道完成是爲了後端。我會調整我的代碼。謝謝。 – edmond

+0

這是否也適用於onSuccess和失敗? – 34m0

+0

是的。在任務完成之前,不會調用完成,成功或失敗處理程序。在寫入提交到後端之前,任務不會完成。 –