小编Moh*_*dan的帖子

每次活动暂停和恢复时 StateFlow 都会发出信号

我有一个状态流,一旦 HTTP 请求随响应返回,该状态流就会发出一个值,该值将在 Activity 中显示为列表,我使用 Kotlin 协程在StateFlowViewModel 和 Activity 之间进行通信。

我正在使用这样的androidx生命周期函数:repeatOnLifecycle

lifecycleScope.launch {
    repeatOnLifecycle(Lifecycle.State.STARTED) {
        viewModel.successFlow.collect { binding.recyclerView.adapter = ExampleAdapter(it) }
    }
}
Run Code Online (Sandbox Code Playgroud)

一开始工作正常,但后来我意识到,每次用户转到另一个屏幕并返回前一个屏幕时,状态流都会重新发出该值,在这种情况下,该值将丢失列表状态,例如,如果用户滚动到10列表中的项目,然后转到另一个屏幕并返回,列表将滚动到位置,0因为setAdapter再次调用该方法,而使用 时则不是这种情况LiveData

现在我也需要处理StateFlow状态和配置状态,我尝试使用该distinctUntilChanged方法,但正如文档所述Applying 'distinctUntilChanged' to StateFlow has no effect

这里的问题是我如何LiveData使用StateFlow.

android kotlin kotlin-coroutines kotlin-flow

10
推荐指数
1
解决办法
2623
查看次数

标签 统计

android ×1

kotlin ×1

kotlin-coroutines ×1

kotlin-flow ×1