Kotlin Flow vs LiveData

问题描述 投票:4回答:1

[在上一个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创建数据流。我同意协程是...

android kotlin android-livedata kotlin-coroutines kotlinx.coroutines.flow
1个回答
0
投票

顾名思义,您可以将Flow看作是多个异步计算值的连续流。从我的角度来看,LiveData与Flow之间的主要区别在于,Flow连续发出结果,而LiveData将在获取所有数据时更新并立即返回所有值。在您的示例中,您正在获取单个值,这在我看来并不完全是针对Flow的。

© www.soinside.com 2019 - 2024. All rights reserved.