마지막 Google I / O에서 Jose Alcerreca와 Yigit Boyar 는 더 이상 LiveData를 사용하여 데이터를 가져 오지 않아야한다고 말했습니다 . 이제 원샷 페치에 suspend 함수를 사용하고 Kotlin의 Flow를 사용하여 데이터 스트림을 작성해야합니다. 코 루틴은 원샷 페치 또는 삽입과 같은 다른 CRUD 작업에 유용하다는 데 동의합니다. 그러나 데이터 스트림이 필요한 경우 Flow가 제공하는 이점을 이해하지 못합니다. LiveData가 동일한 작업을 수행하는 것 같습니다.
흐름이있는 예 :
뷰 모델
val items = repository.fetchItems().asLiveData()
저장소
fun fetchItems() = itemDao.getItems()
다오
@Query("SELECT * FROM item")
fun getItems(): Flow<List<Item>>
LiveData를 사용한 예 :
뷰 모델
val items = repository.fetchItems()
저장소
fun fetchItems() = itemDao.getItems()
다오
@Query("SELECT * FROM item")
fun getItems(): LiveData<List<Item>>
또한 Coroutines와 Flow를 사용하여 Room 또는 Retrofit과 함께 작업하는 프로젝트의 예를보고 싶습니다. 코 루틴이 원샷 페칭에 사용 된 다음 변경시 데이터를 수동으로 리 페치 하는 Google의 ToDo 샘플 만 발견했습니다 .