2017-01-08 5 views
1

メソッドが呼び出されましたが、setValue()データをオフラインにするとonChildAdded()がリスナーでトリガーされていました。 子が実際にデータベースに追加された場合にのみonChildAddedをトリガするようにリスナを設定することはできますか?Firebase:onChildAdded()テスト/デバッグ中にオフラインでも

感謝:)あなたが見ている

答えて

1

行動はセキュリティルールに違反したときについてのいくつかの追加の説明と、this blog post of mineに説明されています。 Firebase Realtime Databaseへの変更は、ローカルで即座に反映され、サーバ上での実行のためにキューに入れられ、デバイスのインターネット接続が許可するたびに終了します。

あなたのコードは、デバイスがオンラインであるかオフラインであるかを心配すべきではありません。これは、データベースの読み書きに関係なく、すべてのデータができるだけ早く同期されることを前提としています。 REST interfaceで読み書きする場合を除き、Android/javaにはこれに代わる方法はありません。これははるかに効率的で便利であり、現在認証されているユーザーを考慮していません。

+0

ありがとうございました。私は全体のプロセスをよりよく理解しています... "これらの即時コールバックは、ネットワーク接続が不十分であってもアプリがうまくいくのを助けることができます。オフライン。" 1.開発者は、アプリが気分が悪くならないようにしなければならないと考えています。 2.この方法で、より多くのデータが生成されます(ユーザーはそれほど多くはありません)。 3.最も重要な点: – Ayox

+1

これのために私は今直面している問題(と私はそれを解決する方法を持っていない)..私はインターネット接続を持っていないと言う... onChildrenAddedはデータベースにメッセージを挿入し、app/phoneはさまざまな理由でクラッシュしますが、メッセージは送信されませんが、データベースに保存されているので、ユーザーは既に送信されていると思います.... 私は、彼らが成功した場合(onSuccess)、アプリケーションは別のデバイスで同時に動作することはできません... – Ayox

+0

永続性が有効である限り、アプリケーションがクラッシュしてもデータベースへの変更は同期されます。唯一の例外は、書き込みを行う明示的なトランザクションであり、安全に再試行することはできません。 https://firebase.google.com/docs/database/android/offline-capabilities –

関連する問題