Fragment生命周期详解

来源:互联网 发布:阿里纳斯数据 编辑:程序博客网 时间:2024/04/28 18:42

最近使用ViewPager+Fragment的组合,遇到一些生命周期以及缓存的问题,总结一下。


第一次创建Fragment的时候,其实执行了这么多方法:

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

其中onViewCreated、onViewStateRestored官方帮助没有提到,但你有时确实可以用到。

按HOME键或者打开别的应用时:

onPause -> onStop

从桌面回来或者从别的应用回来:

onStart -> onResume

我在将Fragment和ViewPager一起使用的时候(使用FragmentPagerAdapter !!),还遇见过这种情况,ViewPager中有三个Fragment1、2、3,通过ViewPager从Fragment2切换到Fragment3的时候Fragment1执行的是:

onPause -> onStop -> onDestroyView


Fragment3切换到Fragment2的时候Fragment1执行的是:
onCreateView -> onViewCreated -> onActivityCreated -> onViewStateRestored-> onStart -> onResume

退出ViewPager所在的Activity的时候Fragment被彻底销毁将要执行的是:

onPause -> onStop -> onDestoryView -> onDestory -> onDetach

这种情况是在ViewPager的缓存页默认为1的情况,而且ViewPager是使用FragmentPagerAdapter适配器的,如果使用的是FragmentStatePagerAdapter由于该 Adapter 的实现将只保留当前页面,当页面离开视线后,就会被消除,释放其资源,所以三个Fragment切换时就如同不断地退出Activity和进入Activity。


资料:

http://feelyou.info/fragment_lifecycle/

http://www.cnblogs.com/lianghui66/p/3607091.html


0 0
原创粉丝点击