在上一个Google I / O中,Jose Alcerreca和Yigit Boyar 告诉我们,我们不再应该使用LiveData来获取数据。现在,我们应该将暂停功能用于一次抓取,并使用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>>
我还希望看到一些使用协程和Flow与Room或Retrofit协同工作的项目示例。我只找到了一个Google的ToDo示例,其中协程用于一次获取,然后在更改时手动重新获取数据。