問題タブ [android-livedata]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
0 に答える
1224 参照

android - アクティビティ再開後の Android LiveData は最新のアイテムのみを取得します

チャット活動があります。このため、メッセージを受け取り次第、1つずつ追加します。

ViewModel をアクティビティで使用しようとしています。ViewModel から Activity にメッセージを渡すために LiveData を使用しています。アクティビティがアクティブな場合はすべて正常に動作しますが、アクティビティが非表示の状態の場合、オブザーバーは ViewModel からアイテムを取得できません。また、アクティビティを再開すると、オブザーバーは ViewModel で割り当てられた最新のアイテムのみを取得します。

基本的に、アプリがバックグラウンドにある場合はアイテムをバッファリングし、アクティビティの再開時にそれらをすべて取得する必要があります。

0 投票する
1 に答える
6474 参照

android - Room、ViewModel、LiveData でのデータ変更後に RecyclerView をリロードする

何日も問題を解決しようとしていますが、うまくいきません。データベース (DB ルーム) で特定のモデルのレコードが変更されるたびに、recyclerView を更新したいと考えています。ViewModel を使用してモデル データを処理し、レコードのリストは LiveData に保存されます。

データベース

モデル

ダオ

ビューモデル

断片

ここで、私の質問は、オブザーバーが (フラグメントの開始時に) 1 回だけ呼び出され、その後再び呼び出されないのはなぜですか? recyclerView を即座に更新できるように、オブザーバーが DB の変更 (挿入、更新、削除) を常にリッスンし続けるにはどうすればよいですか? ご提案いただきありがとうございます。