2017-12-06 2 views
0

私のアプリケーションでは、Firestoreリスナーを使用して特定のドキュメントの変更をリッスンしています。LifeCycleOwner引数で初期化されたFirestoreリスナは、アクティビティが一時停止したときに更新を失います。

FireUtil.Events.getEvent(mEventKey).addSnapshotListener(EventMainActivity.this, (documentSnapshot, e) 

私は別のアクティビティ(私はリスナーが一時停止して追加したもの)で、この文書に変更を加えると、初期活性に戻り、変更内容が表示されていない:私はLifeCycleOwner引数を使用して、このリスナーを初期化(活動の再開が必要です)。

ライフサイクル所有者引数を削除すると、リスナーがトリガーされ、変更が表示されます(ただし、手動でリスナーをクリーンアップする必要があります)。

これは意図した動作ですか、何か不足していますか?

答えて

0

addSnapshotListenerを使用している場合は、変更のためにトリガーされるリスナーを接続します。公式文書のhereを参照してください。どうやらあなたはのonPause()方法です。

EventMainActivityを入力すると、アクティビティが停止したときにCloud Firestoreが自動的にリスナーをクリーンアップします。

これを行うための方法があり、get()メソッドを使用して特定のドキュメントを1回だけ読み取る、目的のドキュメントを取得する方法があります。一度だけ読み込むので、クリーンアップするリスナーはありません。

+0

はい、更新の際にトリガーする必要があります(リスナーが目的のためです)。 – Peter

+0

あなたはそれを解決してうれしいです。 –

0

addSnapshotListenerコール(ライフサイクルオーナーの引数を含む)をonCreate()からonStart()メソッドに移動して解決しました。

関連する問題