【发布时间】:2021-05-25 13:46:14
【问题描述】:
如何在activity中采集两个状态流?因为我只使用了第一个消耗的流量。
比如viewmodel里面是这样的:
class ExampleViewModel: ViewModel(){
private val state = MutableStateFlow<HomeMainFragmentState>(HomeMainFragmentState.Init)
private val products = MutableStateFlow<List<ProductEntity>>(mutableListOf())
//to be consumed
fun getState() : StateFlow<HomeMainFragmentState> = state
fun getProducts() : StateFlow<List<ProductEntity>> = products
}
然后在我看来是这样的:
private fun observe(){
viewLifecycleOwner.lifecycleScope.launch {
viewLifecycleOwner.lifecycle.repeatOnLifecycle(Lifecycle.State.STARTED){
viewModel.getState().collect { state -> handleState(state) }
viewModel.getProducts().collect{ products -> handleProducts(products) }
}
}
}
问题是,只有第一个流被消耗,对于这种情况是“状态”,产品从未被活动/片段消耗/执行。
如何解决这个问题? 我还阅读了有关合并流程的信息,这是否意味着第二个流程取决于第一个流程来运行?
【问题讨论】:
标签: android kotlin android-livedata kotlin-flow