FirebaseUI-Android を使用して RecyclerView でリアルタイム データをリッスンする
RecyclerView では、データの更新が頻繁に必要となるため、FirebaseRecyclerAdapter を使用することが効果的なオプションですFirebase からのリアルタイム データの変更をリッスンします。ただし、コレクション ドキュメントの Reference フィールドを操作する場合、populateViewHolder メソッド内で addSnapshotListener を利用してデータを取得および表示することもできます。
AddSnapshotListener とリスナーの削除
Firebase では、追加された addSnapshotListener が不要になったら削除する必要があります。これは、不要なネットワーク トラフィックを防止し、パフォーマンスを最適化するために重要です。
解決策
populateViewHolder メソッドで addSnapshotListener を効果的に追加および削除するには、次の手順に従います。
EventListener の作成
<code class="java">EventListener<DocumentSnapshot> eventListener = new EventListener<DocumentSnapshot>() { @Override public void onEvent(DocumentSnapshot snapshot, FirebaseFirestoreException e) { // Implement your data retrieval logic here } };</code>
リスナーのグローバル変数を宣言REGISTRATION:
<code class="java">private ListenerRegistration listenerRegistration;</code>
適切な場所に SnapshotListener を追加します:
<code class="java">if (listenerRegistration == null) { listenerRegistration = yourRef.addSnapshotListener(eventListener); }</code>
onStop() メソッドでリスナーを削除します:
<code class="java">@Override protected void onStop() { if (listenerRegistration != null) { listenerRegistration.remove(); } }</code>
onStart() メソッドでリスナーを再アタッチします (必要な場合):
<code class="java">@Override protected void onStart() { super.onStart(); listenerRegistration = yourRef.addSnapshotListener(eventListener); }</code>
または、アクティビティを addSnapshotListener() の最初の引数として使用して、Firestore を自動的に実行することもできますアクティビティが停止したときにリスナーをクリーンアップします。
addSnapshotListener は、リアルタイムのデータ更新が不可欠なシナリオに最適であることに注意してください。それ以外の場合は、リスナーを削除する必要がなく、リファレンスに対して直接 get() を 1 回呼び出すだけで 1 回限りの読み取りで十分です。
以上がFirebaseUI と addSnapshotListener を使用して RecyclerView でリアルタイム データ更新を効率的に管理する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。