关于Fragment的总结

Fragment生命周期:

fragment生命周期图

1.onAttach(Activity):一旦和他所植入的Acitivty结合的时候回调;

2.onCreate(Bundle):创建初始化操作的时候回调;

3.onCreateView(LayoutInflater, ViewGroup, Bundle):创建并返回与片段有关的视图层次结构;

4.onActivityCreated(Bundle):告诉Fragment他的Activity完成了自己的onCreate()操作;

5.onStart():使这个Fragment显示出来,要基于他所植入的Activity已经启动了;

6.onResume():使这个Fragment可以与用户交互,要基于他所植入的Activity已经在运行状态了;

7.onPause():这个Fragment不再与用户交互,可能因为是所植入的Activity被paused了,也可能是在所植入的Activity中有一个操作正在修改他;

8.onStop():这个Fragment不再显示出来,可能因为是所植入的Activity被stoped了,也可能是在所植入的Activity中有一个操作正在修改他;

9.onDestroyView():允许这个Fragment清理他所占有的视图资源;

10.onDestroy():执行Fragment的最终清理阶段;

11.onDetach():立刻与所植入的Activity断开连接;

除了onActivityCreated以外,其余生命周期方法都是一一对应的。

Fragment的add与replace的区别

用add方式实现fragment的效果就是:切换fragment时不会重新创建;用replace的效果就是:切换fragment时每次都会重新创建初始化。
通常fragment切换处理方式都是判断没有调用add,然后用show和hide进行切换。

getFragmentManager、getSupportFragmentManager、getChildFragmentManager理解

FragmentManager的作用是用于管理stack中的framgent。
getFragmentManager、getSupportFragmentManager其实获取的都是Activity里面的Fragment的管理器。getFragmentManager是Activtiy的方法
而getSupportFragmentManager是FragmentActivity的方法。
Fragment中也有FragmentManager,获取的是这个Fragment的管理器。
getChildFragmentManager是Fragment中的方法,是在fragment嵌套fragment的第二层fragment调用的方法。

FragmentPagerAdapter与FragmentStatePagerAdapter的区别

FragmentPagerAdapter:保存所有加入的fragment,虽然步长超过1的页面会调用destroyItem,但是在fragment的生命周期里,只有onDestroyView调用了,没有调用onDestory,也没有调用onDetach,所以fragment只是把上面的view销毁了,fragment并没有销毁。
FragmentStatePagerAdapter:对步长以内的fragment,跟FragmentPagerAdapter一样,不会调用任何销毁操作,再次显示也无需重新创建,对步长以外的fragment会调用destroyItem,跟FragmentPagerAdapter不一样,会真正销毁fragment。适用于页面比较多的情况,这样才不会耗费过多的内存。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容