作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试观察 的结果查看收集和上游流停止 .
但是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")
}
最佳答案
您正在使用 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/
我正在尝试观察 的结果查看收集和上游流停止 . 但是viewModel.testFlow应用程序在后台时仍在收集。 为什么我无法观察到收集已停止?我观察到什么不对吗? View 模型: val tes
我是一名优秀的程序员,十分优秀!