我的 viewModel 中有 2 个 stateFlow。为了将它们收集到片段中,我必须启动协程两次,如下所示:
lifecycleScope.launchWhenStarted {
stocksVM.quotes.collect {
if (it is Resource.Success) {
it.data?.let { list ->
quoteAdapter.submitData(list)
}
}
}
}
lifecycleScope.launchWhenStarted {
stocksVM.stockUpdate.collect {
log(it.data?.data.toString())
}
}
Run Code Online (Sandbox Code Playgroud)
如果我有更多的 stateFlow,我必须分别启动协程。有没有更好的方法来处理我的片段/活动或其他地方的多个 stateFlow?
我们知道StateFlow和SharedFlow很热门。
\n\n\nStateFlow 是一个热流\xe2\x80\x94,只要该流被收集\n或者垃圾收集根中存在对其的任何其他引用,它就会保留在内存中。
\n
\n\nSharedFlow 是一个热流,它向所有从其收集的使用者发送值。\n
\n
水流本身是冷的。
\n\n\n流是类似于序列的冷流......
\n
我有一个问题无法找到直接答案。LiveData 是热的还是冷的?
\nandroid android-livedata kotlin-flow kotlin-stateflow kotlin-sharedflow