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