[英]Why the fragment's context null inside lifecycleScope
我在片段內部使用lifecycleScope時遇到麻煩,我認為如果該片段脫離活動,則lifecycleScope將取消協程作業。
我已經閱讀了lifecycleScope的代碼,但我認為這不可能發生。 我唯一能做的就是為此添加一個前提條件“ iFyres”。
private fun updateUserInfo(user: User) = lifecycleScope.launch {
textView.text = getString(R.string.foo)
}
此代碼拋出
java.lang.IllegalStateException androidx.fragment.app.Fragment.requireContext(Fragment.java:696)
我希望有人可以幫助我解釋lifecycleScope的機制。
Fragment的lifecycleScope(與生命周期本身的方式相同)並不總是具有上下文,只有在onAttach之后和onDetach之前上下文才可用,如果保留Fragment在onDetach之后仍然存在,則上下文可以為null。
因為您不僅可以訪問上下文,而且可以訪問視圖,所以應該使用viewLifecycleOwner.lifecycleScope
,這將允許您在Fragment的View生命周期中啟動協程,因此您始終具有上下文,並且它會取消onDestroyView
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.