【发布时间】:2019-06-02 13:33:54
【问题描述】:
我在片段中使用生命周期范围时遇到问题,我认为如果片段与活动分离,那么生命周期范围将取消协程作业。
我已经阅读了生命周期范围的代码,我认为这不可能发生。 我唯一能做的就是添加一个前置条件“isAdded”来解决这个问题。
private fun updateUserInfo(user: User) = lifecycleScope.launch {
textView.text = getString(R.string.foo)
}
这段代码抛出
java.lang.IllegalStateException androidx.fragment.app.Fragment.requireContext (Fragment.java:696)
希望有人能帮我解释一下生命周期范围的机制。
【问题讨论】:
-
此时您调用
updateUserInfo()的原因可能是,您的Fragment 尚未附加到Activity。 -
如果Fragment没有附加到Activity上,Fragment的lifecycleScope还在运行子协程作业吗?
-
没试过,但我猜是这样,因为 Fragment 的生命周期始于
onCreate而不是onAttach,这是附加上下文的地方
标签: android kotlin lifecycle coroutine