gpt4 book ai didi

android - flowWithLifecycle(lifecycle, Lifecycle.State.STARTED) 在 App 在后台时不会停止流

转载 作者:行者123 更新时间:2023-12-05 00:00:41 24 4
gpt4 key购买 nike

我正在尝试观察 的结果查看收集和上游流停止 .
但是viewModel.testFlow应用程序在后台时仍在收集。
为什么我无法观察到收集已停止?我观察到什么不对吗?
View 模型:

val testFlow = flow<Int> {
for (i in 1..100) {
delay(1000)
Timber.e("testFlow: EMIT = $i")
emit(i)
}
}
Activity :
override fun onViewCreated() {
lifecycleScope.launch {
viewModel.testFlow
.flowWithLifecycle(lifecycle, Lifecycle.State.STARTED)
.collect {
Timber.d("testFlow: $it Collected")
}
}
}

override fun onActivityPaused(activity: Activity) {
super.onActivityPaused(activity)
Timber.e("testFlow: onActivityPaused")
}
Logs
Lifecycle Diagram
https://medium.com/androiddevelopers/a-safer-way-to-collect-flows-from-android-uis-23080b1f8bda

最佳答案

您正在使用 Lifecycle.State.STARTED开始观察的状态Flow ,Activity的对应方法当排放停止是onStop() .如果 onStop() Activity的方法称为发射和收集将停止。
如果您想在 onPause 时停止发送和收集数据方法被调用,可以使用Lifecycle.State.RESUMED状态。
当应用程序进入后台 onStop() Activity的方法被调用并且在使用 Lifecycle.State.STARTED 时状态观察Flow您应该看到排放和收集停止。

关于android - flowWithLifecycle(lifecycle, Lifecycle.State.STARTED) 在 App 在后台时不会停止流,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70606801/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com