新人紧急求助-fragment的变量传值的线程问题,百试不...

新人紧急求助-fragment的变量传值的线程问题,百试不...,第1张

补充下,而且重新构造后,

什么

oncreate,oncreateview,onPause,onstop,onStart,Onresume

里该变量都是第一次构造的值,

构造函数里都更新了,这些方法里为什么就不更新过来呢。。???????????????????

查看原帖>>

首先调用Activity的onCreate和onStart,然后Fragment会连续的从onAttach到onStart,然后调用Activity的onResume,最后是Fragment的onResume。

** 值得注意的是Fragment的onSart方法可能是在Fragment的onSart方法之前被调用,而且Fragment从onAttach到onStart是一个连续的执行。

add一个Fragment的时候不管之前是否有其他的Fragment,其他的Fragment是以什么方式加进去的,都会从onAttach方法开始走到onResume

onAttach --> onCreate --> onCreateView --> onActivityCreated -->  onStart -->onResume

如果之前没有Fragment 直接Replace 相当于Add

onAttach --> onCreate --> onCreateView --> onActivityCreated -->  onStart -->onResume

如果之前有一个Fragment  A ,然后现在要 B replace A

B: onAttach --> onCreate   

A: onPause --> onStop -->  onDestroyView -->onDestory -->onDetach  (onDestory、onDetach取决于A是否有添加到回退栈)

B: onCreateView --> onActivityCreated -->  onStart -->onResume

当remove一个fragment的时候,它的生命周期跟是否添加到回退栈( addToBackStack )有关系。如果Fragment被添加到回退栈中的话,销毁时只会销毁View,生命周期走到onDestroyView,不会把整个Fragment销毁,跟Activity断开关联

onPause --> onStop -->  onDestroyView --> onDestory --> onDetach  (onDestory、onDetach取决于A是否有添加到回退栈)

通过 hide() 、 show() 来隐藏、显示Fragment,此时 Fragment 只改变了可见性,并不涉及生命周期的改变

commit、commitNow、commitAllowingStateLoss、commitNowAllowingStateLoss

commit 是异步 *** 作,会将任务提交给主线程,

commitNow 会立即执行事务

commitAllowingStateLoss 和 commit的区别就是:commit如果在onSaveInstanceState之后提交会抛出IllegalStateException(无效状态异常)

状态的丢掉,指的是可能丢掉FragmentManager状态, 即onSaveInstanceState之后任何被添加或被移除的Fragments.


欢迎分享,转载请注明来源:内存溢出

原文地址: http://www.outofmemory.cn/bake/11682199.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-17
下一篇 2023-05-17

发表评论

登录后才能评论

评论列表(0条)

保存