我认为可以在 onViewCreated 上收集 SharedFlow 数据。但是当我替换片段 n 次然后向 SharedFlow 触发一些事件时,它会向我发出 n 次事件而不是一个事件。
我已经修复了我如何将代码放在我的 Fragment 上的 onCreate 上。但我还没有找到任何关于此的文档。我是否遗漏了什么,或者我应该继续在 Fragment 的 onCreate 中使用 SharedFlow 集合?
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
lifecycleScope.launchWhenResumed {
viewModel.uiEffect.collect {
when (it) {
is ViewEffectWrapper.PageEffect -> {
if (it.pageEvent is LoginViewEffect.OpenHomePage) {
startActivity(
Intent(
this@LoginFragment.context,
HomeActivity::class.java
)
)
}
}
}
}
}
}
这是我在 ViewModel 的 SharedFlow 定义
private val _uiEffect = MutableSharedFlow<ViewEffectWrapper<LoginViewEffect>>(replay = 0)
val uiEffect: SharedFlow<ViewEffectWrapper<LoginViewEffect>> = _uiEffect