小编Azi*_*mov的帖子

从多个状态流收集

我的 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?

android kotlin kotlin-coroutines kotlin-stateflow

21
推荐指数
4
解决办法
1万
查看次数

LiveData 是热的还是冷的?

我们知道StateFlow和SharedFlow很热门。

\n
\n

StateFlow 是一个热流\xe2\x80\x94,只要该流被收集\n或者垃圾收集根中存在对其的任何其他引用,它就会保留在内存中。

\n
\n
\n

SharedFlow 是一个热流,它向所有从其收集的使用者发送值。\n

\n
\n

水流本身是冷的。

\n
\n

流是类似于序列的冷流......

\n
\n

我有一个问题无法找到直接答案。LiveData 是热的还是冷的?

\n

android android-livedata kotlin-flow kotlin-stateflow kotlin-sharedflow

2
推荐指数
1
解决办法
2268
查看次数