2017-09-02 5 views
1

タイトルに記載されているとおり、Firebaseリアルタイムデータベースを永続性を有効にして使用しています。ガイドに記載されているようにAndroid用Firebaseデータベース - 永続性を使用してオフライン時にイベントを書き込む

持続性を有効にするには、オンラインでディスクに持続し、ユーザーまたはオペレーティングシステムは、アプリを再起動した場合であっても、オフラインで利用可能である間Firebaseリアルタイムデータベースクライアントが同期するであろうと、任意のデータ。つまり、キャッシュに保存されているローカルデータを使用してアプリケーションをオンラインにするように動作させることができます。 リスナーコールバックは、ローカルアップデートに対して引き続き発生します。

これはValueEventListeners、すべてのリスナーを読んで発生している間、私はそれは同様の書き込み操作で動作させるための方法を見つけることができません。 これは私のデータベースのヘルパークラスからの抜粋です:

DatabaseReference userRef = root.child("users").child(user.getUid()); 
    userRef.setValue(user).addOnSuccessListener(new OnSuccessListener<Void>() { 
     @Override 
     public void onSuccess(Void result) { 
      //handle success event 
     } 
    }).addOnFailureListener(new OnFailureListener() { 
     @Override 
     public void onFailure(@NonNull Exception e) { 
      //handle failure event 
     } 
    }); 

持続性を有効にしても、データベースは「反応ファッション」で動作させる必要があること、データベースが再びオンラインになるまでこれら2人のリスナーがを発生しません最後に更新をサーバーにプッシュします。

データがローカルにキャッシュされると、イベントが発生すると予想していたので、これは私が望んでいたものではありません。 私は単にイベントを無視して成功したふりをすることができると知っていますが、私は何か不足していますか?データがキャッシュされるとすぐにイベントをトリガーする方法はありますか?

答えて

1

onSuccessライト操作のリスナーは、データがサーバー上のデータベースに書き込まれるときにトリガーされます。

データがローカルキューに書き込まれたときにトリガーするイベントはありません。

+0

申し訳ありませんが、私はそれが成功するふりをする必要がありますように見えます!結果を無視して、私が使用できる回避策はありますか?リスナーを追加する前に接続状態をチェックしようとしましたが、接続した後に接続が失われた場合(接続リスナーが状態を更新するのに時間がかかります)、以前と同じように動作し、接続が戻るまで待機します。私はそれらのリスナーを削除する方法を見つけることができません。 –

+0

私は[何を達成しようとしているのかわからない]((http://meta.stackexchange.com/questions/66377/what-is-the-xy-problem)、なぜシステム動作する。 –

関連する問題