簡體   English   中英

為什么片段的上下文在lifecycleScope中為空

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM