2017-10-10 12 views
1

新しいクラウドファイアストアデータベースを使用してアプリケーションを作成しています。オフラインパーシスタンスが有効になっているにもかかわらず、多くのものがオフラインでスムーズに動作しないという事実を除けば、素晴らしい作品です。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を表示したいと思います。しかし、それが決してしない限り、活動は開いたままです。私はアンドロイドスタジオエミュレータを使用しています。データベースへの書き込み

おかげ

答えて

3

操作は、それらが実際にバックエンドにコミットしたら完了を通知するように定義されています。その結果、これは意図したとおりに動作しています。オフラインの間は、完了を通知しません。

Firestoreクライアントは、削除からタスクの完了を待たずに自分の書き込みを読み取ることができることを内部的に保証します。

ほとんどの場合、このタスクが完了するまで待つ必要はありません。何か特別な理由がありますか?

+0

こんにちは@ギルギルバート。私は完成がバックエンドのためのものであることを知らなかった。私は自分のコードを調整します。ありがとう。 – edmond

+0

同じことがonSuccessとFailureに適用されますか? – 34m0

+0

はい。タスクが完了するまで、完了、成功、または失敗のハンドラは呼び出されません。書き込みがバックエンドにコミットされるまで、タスクは完了しません。 –

関連する問題