[在上一个Google IO中,Jose Alcerreca和Yigit Boyar told us,我们需要使用暂停功能进行一次抓取,并使用Kotlin的Flow创建数据流。我同意协程对于单次获取或其他CRUD操作(例如插入等)非常有用。但是,在需要数据流的情况下,我不了解Flow给我带来什么好处。在我看来,LiveData也在这样做。
流程示例:] >>
ViewModel
val item = repository.fetchItem(id).asLiveData()
存储库
fun fetchItem(id: Long) = itemDao.getItem(id)
Dao
@Query("SELECT * FROM item WHERE _id = :id") fun getItem(id: Long): Flow<Item>
LiveData示例:
ViewModel
val item = repository.fetchItem(id)
存储库
fun fetchItem(id: Long) = itemDao.getItem(id)
Dao
@Query("SELECT * FROM item WHERE _id = :id") fun getItem(id: Long): LiveData<Item>
我还希望看到一些使用协程和Flow与Room或Retrofit配合使用的项目的示例。我只找到了Google的ToDo sample,其中协程用于一次获取,然后在更改时手动重新获取数据。
[在上一个Google IO中,何塞·阿尔塞雷卡(Jose Alcerreca)和伊吉特·博亚尔(Yigit Boyar告诉我们,我们需要使用暂挂功能进行一次抓取,并使用Kotlin的Flow创建数据流。我同意协程是...
顾名思义,您可以将Flow看作是多个异步计算值的连续流。从我的角度来看,LiveData与Flow之间的主要区别在于,Flow连续发出结果,而LiveData将在获取所有数据时更新并立即返回所有值。在您的示例中,您正在获取单个值,这在我看来并不完全是针对Flow的。