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。适用于页面比较多的情况,这样才不会耗费过多的内存。