android - LiveData 是热的还是冷的?
问题描述
我们知道 StateFlow 和 SharedFlow 很热门。
StateFlow 是一个热流——只要该流被收集或当垃圾收集根中存在对它的任何其他引用时,它就会保留在内存中。
SharedFlow 是一个热流,它向从它收集的所有消费者发出值。
流动本身是冷的。
流是类似于序列的冷流......
我有一个找不到直接答案的问题。LiveData 是热的还是冷的?
解决方案
LiveData 不能与 Flow 直接比较。它与 StateFlow 最直接可比。
调用setData
LiveData 对象的代码总是会改变 LiveData 的状态,而不管它上面的任何观察者。在这方面,它很热——观察者的存在根本不重要。状态总是在变化,并且该状态被广播给任何观察者。
此外,LiveData 上的观察者总是会从中获取当前状态值——他们不会等待(或暂停)任何值变得可用。LiveData 必须始终具有值。在将任何其他数据放入其中之前,观察者将获得该值。
在这些方面,基于类似于 StateFlow 的使用模式,LiveData 很可能被认为是“热的”。
推荐阅读
- javascript - 在 cshtml 视图中调用 window.onload
- linux - 将windows上的两个文件夹与两个linux服务器文件夹同步
- python - 我正在尝试运行 ssh 到远程机器以检查可用性的自动化脚本。在 CircleCi 运行时获取身份验证失败错误
- c# - JwtSecurityTokenHandler().WriteToken(token) 在托管环境中抛出错误
- c - 有没有办法告诉 C 编译器内联变量?
- python - 为词频代码编码时出现 Web 抓取错误
- expo - 是否有可能以某种方式创建 ios 构建并将其部署到我的个人 iphone?
- r - Convert JSON to data.frame using tidyjson
- locust - 如何在蝗虫中为每个用户类分配固定数量的用户
- javascript - 依赖注入 MSAL Javascript 库