Estoy tratando de observar el resultado de View Collection y los flujos ascendentes se detuvieron . Pero viewModel.testFlow aún se recopila mientras la aplicación está en segundo plano. ¿Por qué no puedo observar que se detiene la recopilación? ¿Estoy observando algo mal?
Ver modelo:
val testFlow = flow<Int> { for (i in 1..100) { delay(1000) Timber.e("testFlow: EMIT = $i") emit(i) } }Actividad:
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") }https://medium.com/androiddevelopers/a-safer-way-to-collect-flows-from-android-uis-23080b1f8bda
Está utilizando el estado Lifecycle.State.STARTED para comenzar a observar Flow , el método correspondiente de la Activity cuando se detiene la emisión es onStop() . Si se llama al método onStop() de Activity , la emisión y la recolección se detendrán.
Si desea dejar de emitir y recopilar datos cuando se llama al método onPause , puede usar el estado Lifecycle.State.RESUMED .
Cuando la aplicación pasa a segundo plano, se llama al método onStop() de Activity y cuando se usa el estado Lifecycle.State.STARTED para observar el Flow , debería ver que se detiene la emisión y la recolección.