Kotlin 面试题
目录

Kotlin 中冷流 (Cold Flow) 和热流 (Hot Flow) 的区别是什么?

· 约 3 分钟读完 · 第 147 / 200 章

推荐答案

在 Kotlin 中,冷流(Cold Flow)和热流(Hot Flow)是两种不同的流类型,主要区别在于它们的发射行为和数据共享方式。

  • 冷流(Cold Flow):冷流是惰性的,只有在收集者开始收集数据时,才会开始发射数据。每个收集者都会触发一个新的数据流,数据流是独立的,不会共享。典型的冷流实现是 Flow。

  • 热流(Hot Flow):热流是主动的,无论是否有收集者,数据都会持续发射。多个收集者可以共享同一个数据流,数据流的发射不依赖于收集者的存在。典型的热流实现是 StateFlow 和 SharedFlow。

本题详细解读

冷流(Cold Flow)

冷流的特点是惰性发射,只有在有收集者开始收集数据时,才会触发数据的发射。每个收集者都会触发一个新的数据流,这意味着每个收集者都会从头开始接收数据。冷流的数据流是独立的,不会在多个收集者之间共享。

示例代码

输出

热流(Hot Flow)

热流的特点是主动发射数据,无论是否有收集者,数据都会持续发射。多个收集者可以共享同一个数据流,数据流的发射不依赖于收集者的存在。热流通常用于需要共享状态或事件的场景。

示例代码

输出

总结

  • 冷流:惰性发射,每个收集者触发独立的数据流,适合处理独立的数据流场景。
  • 热流:主动发射,多个收集者共享同一个数据流,适合处理共享状态或事件的场景。