问题描述
我想创建一个共享视图模型,用于 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 (将#修改为@)