Channel 或 mutablesharedflow ,哪个是已弃用的 localbroadcastmanager 的更好替代品

sok*_*sok 12 android channel kotlin kotlin-sharedflow

过去,我LocalBroadcastManager and EventBus在聊天和出租车应用程序中使用这些应用程序,但现在这些应用程序要么已弃用,要么不建议使用它们。

我打算用新的数据结构替换它们,例如mutablesharedflow or channel,我想知道哪一个更适合我的情况?或者也许是另一种数据结构?

Chr*_*anB 17

Roman Elizarov开始,通道被添加为协程间通信原语。

您不能使用通道以允许多个订阅者独立接收事件或状态更新并对其做出反应的方式来分发事件或状态更新。

于是他们介绍了Flow。但 Flow 是一个冷可观察对象,每个订阅者都会获得自己的数据(独立于其他订阅者)。使用SharedFlow,您可以获得一个独立于任何订阅者而发出的热可观察对象。

您可以对ConflatedBroadcastChannel执行相同的操作。但JetBrains 建议使用 Flow 而不是 Channels,因为它们的 API 更简单。

因此,如果您想迁移到协程并且需要多个订阅者可以收听的热门可观察对象,那么您应该选择SharedFlow.