Kotlin协程:通道vs流量

问题描述 投票:0回答:1

我最近正在学习和阅读有关Flow和Kotlin Coroutines的很多文章。但是我仍然感到困惑,何时应使用Flow和何时应使用Channel

一开始看起来比较简单。使用热数据流? Channel。冷的? Flows。如果您需要从多个地方监听数据流,情况也是这样,如果是这种情况,则选择Channel。仍然有很多示例和问题。

但是最近引入了FlowChannels,以及大量鼓励使用Flow的方法和类,以及将Channels转换为Flows的工具,依此类推。随着Kotlin发行版中所有这些新内容和新内容的出现,我开始变得越来越困惑。所以问题是:

我什么时候应该使用Channel,什么时候应该使用Flow?

希望SO社区能够对此清除思路!

非常感谢!

kotlin stream channel kotlin-coroutines
1个回答
0
投票

对于迄今为止最好的工具是Channel的许多使用案例,Flow已成为新的最佳工具。

作为一个具体示例,callbackFlow现在是从第三方API的回调中接收数据的最佳方法。这在GUI设置中特别有效。它将回调,通道和相关的接收协程耦合在一起,它们都在同一个独立的Flow实例中。仅在收集流时才注册回调。取消流程会自动传播到关闭通道并注销回调。您只需要提供一次回调注销代码。

您应该将Channel视为Flow在其实现中使用的较低级原语。仅在意识到Flow不符合您的要求后,才考虑直接使用它。

© www.soinside.com 2019 - 2024. All rights reserved.