LiveData 是热的还是冷的?

问题描述

我们知道 StateFlow 和 SharedFlow 很热门。

StateFlow 是一个热流——只要流处于 收集或从垃圾中存在对它的任何其他引用 集合根。

SharedFlow 是一个热流,它向所有消费者发送值 从中收集。

流动本身是冷的。

流是类似于序列的冷流...

我有一个无法直接回答的问题。 LiveData 是热的还是冷的?

解决方法

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

在 LiveData 对象上调用 setData 的代码总是会改变 LiveData 的状态,而不管它上面有任何观察者。在这方面,它很热 - 观察者的存在根本无关紧要。状态总是会改变,并且该状态会广播给任何观察者。

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

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