当应用程序从后台进入前台时,不会调用Android launchWhenSumed



在我的片段中,

override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
Log.e(TAG, "Inside on view created")
lifecycleScope.launchWhenResumed {
Log.e(TAG, "Inside lifecyclescope get data")
viewModel.getData().collect {
// ....

}
}
}
override fun onResume() {
Log.e(TAG, "Inside on resume")
super.onResume()
}

以下是不同场景中的日志序列-

  1. 当应用程序刚打开时-

    内部视图创建

    内部恢复

    生命周期内ope获取数据

  2. 当从一个片段回到这个片段时-

    内部视图创建

    内部恢复

    生命周期内ope获取数据

现在问题来了。。。

  1. 当应用程序从后台进入前台时-

    内部恢复

如您所见,我只看到onResume()日志,但我也希望出现日志Inside lifecyclescope get data。我在这里做错什么了吗?

我相信您正在寻找的是Lifecycle.repeatOnLifecycle

lifecycleScope.launch {
lifecycle.repeatOnLifecycle(Lifecycle.State.RESUMED) {
// Do stuff
}
}
}

更多信息:

  • https://developer.android.com/jetpack/androidx/releases/lifecycle
  • https://medium.com/androiddevelopers/a-safer-way-to-collect-flows-from-android-uis-23080b1f8bda

最新更新