在我的片段中,
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()
}
以下是不同场景中的日志序列-
当应用程序刚打开时-
内部视图创建
内部恢复
生命周期内ope获取数据
当从一个片段回到这个片段时-
内部视图创建
内部恢复
生命周期内ope获取数据
现在问题来了。。。
当应用程序从后台进入前台时-
内部恢复
如您所见,我只看到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