微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决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 举报,一经查实,本站将立刻删除。