Android - MutableSharedFlow 无法收集多订阅者的新值

问题描述

我想创建一个共享视图模型,用于 MainActivity 与 Fragment 之间的通信。 我决定使用共享流来管理事件。

 private val _sharedChannel: MutableSharedFlow<SharedEvent> = MutableSharedFlow(
        replay = 0,extraBufferCapacity=0,onBufferOverflow = BufferOverflow.SUSPEND)
    val sharedChannel = _sharedChannel.asSharedFlow()

我不需要缓存最后一个事件,即使方向改变也不需要......所以我设置了“replay = 0”

当我只在我的主要活动中收集事件时 - 一切正常:

   lifecycleScope.launchWhenStarted {

        gamePlaySharedviewmodel.sharedChannel.collect { event->
            SnappLog.log("GamePlayContainer-> sharedChannel EVENT: $event ")
            when(event){
                GamePlaySharedviewmodel.SharedEvent.OnBackPress -> {
                    onBackpressed()
                }
                is GamePlaySharedviewmodel.SharedEvent.BlockScreen -> {
                    blockScreen(event.isBlocked)
                }
                else -> {

                }
            }

        }
    }
}

将第二个订阅添加到另一个片段时 - 两个订阅者都在第一个之后停止接收事件(第一个事件发送成功..) 我该怎么做才能订阅多个 MutableSharedFlow? 我试图增加“重播”的次数并更改“onBufferOverflow” - 似乎没有任何效果..

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)