什么
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.
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)