FragmentTransaction与Fragment生命周期的关系
来源:互联网 发布:灰度共生矩阵 svm 编辑:程序博客网 时间:2024/05/17 03:42
在Android中,对Fragment的操作都是通过FragmentTransaction来执行。而从Fragment的结果来看,FragmentTransaction中对Fragment的操作大致可以分为两类:
显示:add() replace() show() attach()隐藏:remove() hide() detach()
对于每一组方法,虽然最后产生的效果类似,但方法背后带来的副作用以及对Fragment的生命周期的影响都不尽相同。
add() vs. replace()
只有在Fragment数量大于等于2的时候,调用add()还是replace()的区别才能体现出来。当通过add()连续两次添加Fragment的时候,每个Fragment生命周期中的onAttach()-onResume()都会被各调用一次。
同样,退出Activty时,每个Fragment生命周期中的onPause()-onDetach()也会被各调用一次。
但当使用replace()来添加Fragment的时候,第二次添加会导致第一个Fragment被销毁,即执行第二个Fragment的onAttach()方法之前会先执行第一个Fragment的onPause()-onDetach()方法。
show() & hide() vs. attach() & detach()
调用show() & hide()方法时,Fragment的生命周期方法并不会被执行,仅仅是Fragment的View被显示或者隐藏。而且,尽管Fragment的View被隐藏,但它在父布局中并未被分离,仍然存在着。相比较下,一旦一个Fragment被detach(),它的onPause()-onDestroyView()周期都会被执行。同时Fragment的View也会被分离。
在重新调用attach()后,onCreateView()-onResume()周期也会被再次执行。
remove()
其实看完上面的分析,remove()方法基本也就明白了。detach()方法执行onPause()-onDestroyView()的生命周期,而remove()就是完成onPause()-onDetach()周期。多了个onDetach()生命周期。
- FragmentTransaction与Fragment生命周期的关系
- FragmentTransaction与Fragment生命周期的关系
- FragmentTransaction与Fragment生命周期的关系
- FragmentTransaction与Fragment生命周期的关系
- FragmentTransaction与Fragment生命周期的关系
- FragmentTransaction与Fragment生命周期的关系
- Android之FragmentTransaction与Fragment生命周期的关系
- Viewpager和FragmentTransaction、Fragment生命周期的关系
- fragmentTransaction与fragment生命周期
- FragmentTransaction管理的Fragment生命周期状态
- FragmentTransaction管理的Fragment生命周期状态
- fragment的生命周期与activity的关系
- Fragment生命周期及其与activity的关系
- Fragment生命周期及其与activity的关系
- Android Fragment的FragmentTransaction 操作和对应的生命周期变化
- 【Android】Activity与Fragment的生命周期的关系
- 小结Fragment与FragmentPagerAdapter的生命周期及其关系
- Activity与Fragment生命周期及之间的关系
- 进程之信号通信
- 矩阵的快速转置
- 关于嵌入式的入门
- python数据持久存储:pickle模块的基本使用
- H5_Node1_新标签&新属性& 硬件调用
- FragmentTransaction与Fragment生命周期的关系
- Android基础--Activity生命周期
- CodeForces 681B Economy Game (暴力)
- ViewPager的setOnPageChangeListener方法详解
- JSP基础语法
- 进程
- 奔三奶爸初学php心得记录(第一天)
- nginx安装 nginx: [emerg] getpwnam(“www”) failed 错误
- java biginteger怎么用