android - LiveData 是热的还是冷的?

标签 android android-livedata kotlin-flow kotlin-stateflow kotlin-sharedflow

我们知道StateFlow和SharedFlow很火。

StateFlow is a hot flow—it remains in memory as long as the flow is collected or while any other references to it exist from a garbage collection root.

SharedFlow is a hot flow that emits values to all consumers that collect from it.

流动本身是冷的。

Flows are cold streams similar to sequences...

我有一个问题,但我找不到直接的答案。 LiveData 是热的还是冷的?

最佳答案

LiveData 不能直接与 Flow 相提并论。它与 StateFlow 最直接的可比性。

在 LiveData 对象上调用 setData 的代码总是会更改 LiveData 的状态,无论其上是否有任何观察者。在这方面,它很热 - 观察员的存在根本不重要。状态总是在变化,并且该状态会广播给所有观察者。

此外,LiveData 上的观察者总是会从中获取当前状态值 - 他们不会等待(或暂停)任何值变得可用。 LiveData 必须始终有一个值。在将任何其他数据放入其中之前,观察者将获得该值。

在这些方面,基于与 StateFlow 类似的使用模式,LiveData 很可能被认为是“热门”。

关于android - LiveData 是热的还是冷的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68356910/

相关文章:

java - setSpeakerphoneOn 的奇怪 AudioManager 行为

kotlin - 为什么我得到信息 Enum 参数在 Java 中可以为空,但在 Kotlin 中不包含空分支时却是详尽无遗的?

android - 从 ViewModel 中的服务器获取数据后,LiveData Observer 不会更新 UI

android - 在 ViewModel 初始化中观察 StateFlow 发射

kotlin - 与 kotlins 流异步发出流值

android - 单元测试新的 Kotlin 协程 StateFlow

android - 使用tomtom location api android获取用户之间的距离

java - 如何根据 firebase 中的 id 更新另一个用户余额?

android - 如何让 Horizo​​ntalScrollView 与一个自定义 View 子项一起滚动

android - 我们如何保存和恢复 Android StateFlow 的状态?