LiveData 是热的还是冷的?

Azi*_*mov 2 android android-livedata kotlin-flow kotlin-stateflow kotlin-sharedflow

我们知道StateFlow和SharedFlow很热门。

\n
\n

StateFlow 是一个热流\xe2\x80\x94,只要该流被收集\n或者垃圾收集根中存在对其的任何其他引用,它就会保留在内存中。

\n
\n
\n

SharedFlow 是一个热流,它向所有从其收集的使用者发送值。\n

\n
\n

水流本身是冷的。

\n
\n

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

\n
\n

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

\n

Dou*_*son 11

LiveData 不能直接与 Flow 相比较。它与 StateFlow 最直接可比。

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

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

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