Orc*_*say 6 android kotlin kotlin-coroutines kotlin-flow kotlin-stateflow
我正在尝试观察View Collection 和上游流量已停止的结果。但当viewModel.testFlow应用程序在后台时仍在收集。为什么我看不到收集已停止?我观察到了什么错误吗?
视图模型:
val testFlow = flow<Int> {
for (i in 1..100) {
delay(1000)
Timber.e("testFlow: EMIT = $i")
emit(i)
}
}
Run Code Online (Sandbox Code Playgroud)
活动:
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")
}
Run Code Online (Sandbox Code Playgroud)
https://medium.com/androiddevelopers/a-safer-way-to-collect-flows-from-android-uis-23080b1f8bda
您正在使用Lifecycle.State.STARTED状态来开始观察,当发射停止时Flow对应的方法是。如果调用的方法,发射和收集将停止。ActivityonStop()onStop()Activity
如果您想在onPause调用方法时停止发出和收集数据,可以使用Lifecycle.State.RESUMED状态。
当应用程序进入后台时,调用onStop()方法并且使用状态来观察时,您应该看到发射和收集停止。ActivityLifecycle.State.STARTEDFlow
| 归档时间: |
|
| 查看次数: |
4100 次 |
| 最近记录: |