3

LiveData 処理に関する以下のユース ケースの処理に関する推奨事項を探しています。ViewModel は、LiveData のリポジトリを呼び出します (製品カタログなど)。リポジトリは最初に LocalDataSource(Room) からチェックしますが、データが利用できない場合は、RemoteDataSource(REST API) を呼び出します。

質問:

1) 以下の ygit からのコメントのとおりリポジトリは、オブザーバーとしてサブスクライブするまで、Room で LiveData の可用性ステータスを取得できません。したがって、データが利用可能な場合でも、応答で null が返されます。 「LiveData はデータを監視し、それをオブザーバーに配布します。アクティブなオブザーバーが追加されるまで値を計算しません。」

リポジトリはデータ ソースをクライアントに隠しているため、Room をチェックインしてリモート ソースから取得するのはリポジトリの役割です。Room でデータの可用性を確認するにはどうすればよいですか?

2) RemoteDataSource によって返されるデータは LiveData タイプではないため、リポジトリが最終的に LiveData を ViewModel に返すようにするにはどうすればよいですか?

リポジトリは最初に (RemoteDataSource から) データをまず Room に挿入し、次に Room をクエリして LiveData を返す必要がありますか? プロセスで Room が 2 回クエリされるため、非常にコストのかかる操作に見えます。お知らせ下さい 。ありがとう !

4

2 に答える 2