前回のGoogle I / Oで、Jose AlcerrecaとYigit Boyar は、LiveDataを使用してデータをフェッチすることはもうやめるべきだと言っていました。ここで、ワンショットフェッチに中断関数を使用し、Kotlinのフローを使用してデータストリームを作成する必要があります。コルーチンはワンショットフェッチや挿入などの他のCRUD操作に最適であることに同意します。しかし、データストリームが必要な場合、Flowがどのような利点をもたらすかわかりません。LiveDataも同じことをしているようです。
フローの例:
ViewModel
val items = repository.fetchItems().asLiveData()
リポジトリー
fun fetchItems() = itemDao.getItems()
ダオ
@Query("SELECT * FROM item")
fun getItems(): Flow<List<Item>>
LiveDataの例:
ViewModel
val items = repository.fetchItems()
リポジトリー
fun fetchItems() = itemDao.getItems()
ダオ
@Query("SELECT * FROM item")
fun getItems(): LiveData<List<Item>>
また、コルーチンとFlowを使用してRoomまたはRetrofitを操作するプロジェクトの例もいくつか見たいと思います。コルーチンがワンショットフェッチに使用され、変更時にデータを手動で再フェッチするGoogleのToDoサンプルのみが見つかりました。