viewPager+Fragment的生命周期和预加载问题
2015-10-09 13:53
357 查看
viewPager+Fragment的生命周期和预加载问题
在项目中用到了viewPager + Fragment 的组合进行页面的滑动切换。在viewPager
中加入了3个Fragment:FragmentA,FragmentB,FragmentC,分别在每个Fragment
中的生命周期方法中加入log日志。来查看页面切换时,Fragment生命周期的调用。
进入FragmentActivity主页,加载第一个FragmentA时发现:除了加载FragmentA的
同时,也加载了FragmentB。如图:
在项目中,用到ViewPager+Fragment,Fragment会进行预加载,例如你在ViewPager
中添加了三个Fragment,当加载ViewPager中第一个Fragment时,它会默认帮你预先
加载了第二个Fragment,当你加载第二个Fragment时,它会帮你加载第三个Fragment。
如图:当滑动到FragmentB时,FragmentC也进行了预加载。
预加载只会加载下一页,但是它会销毁上一页的前面那页。列如:加载到FragmentC的
时候,对FragmentB没影响,但它会销毁FragmentA,即调用了FragmentA的onPause(),
onStop(),onDestroyView();如图下所示:滑入了FragmentC的页面:
再从第三页的FragmentC滑回第二页的FragmentB,会重新调用FragmentA的页面创建方法。如图:
再从FragmentB滑回FragmentA则会销毁FragmentC,而滑到FragmentA时并不会再次调用FragmentA的生命周期的方法,因为已经在加载FragmentB的同时,已经预先加载了FragmentA。如图:
最后退出FragmentActivity时FragmentA,FragmentB,FragmentC都调用了各自的onDetach()的方法。
注意:onAttach()是当碎片和活动建立关联的时候调用。
onDetach()是当碎片和活动解除关联的时候调用的方法。
当想知道FragmentActivity所正在哪个Fragment时可以通过调用:ViewPager中的
getCurrentItem()方法。通过这个方法可以得到当前的子Fragment的位置
在项目中用到了viewPager + Fragment 的组合进行页面的滑动切换。在viewPager
中加入了3个Fragment:FragmentA,FragmentB,FragmentC,分别在每个Fragment
中的生命周期方法中加入log日志。来查看页面切换时,Fragment生命周期的调用。
进入FragmentActivity主页,加载第一个FragmentA时发现:除了加载FragmentA的
同时,也加载了FragmentB。如图:
在项目中,用到ViewPager+Fragment,Fragment会进行预加载,例如你在ViewPager
中添加了三个Fragment,当加载ViewPager中第一个Fragment时,它会默认帮你预先
加载了第二个Fragment,当你加载第二个Fragment时,它会帮你加载第三个Fragment。
如图:当滑动到FragmentB时,FragmentC也进行了预加载。
预加载只会加载下一页,但是它会销毁上一页的前面那页。列如:加载到FragmentC的
时候,对FragmentB没影响,但它会销毁FragmentA,即调用了FragmentA的onPause(),
onStop(),onDestroyView();如图下所示:滑入了FragmentC的页面:
再从第三页的FragmentC滑回第二页的FragmentB,会重新调用FragmentA的页面创建方法。如图:
再从FragmentB滑回FragmentA则会销毁FragmentC,而滑到FragmentA时并不会再次调用FragmentA的生命周期的方法,因为已经在加载FragmentB的同时,已经预先加载了FragmentA。如图:
最后退出FragmentActivity时FragmentA,FragmentB,FragmentC都调用了各自的onDetach()的方法。
注意:onAttach()是当碎片和活动建立关联的时候调用。
onDetach()是当碎片和活动解除关联的时候调用的方法。
当想知道FragmentActivity所正在哪个Fragment时可以通过调用:ViewPager中的
getCurrentItem()方法。通过这个方法可以得到当前的子Fragment的位置
相关文章推荐
- 使用ViewPager实现高仿launcher左右拖动效果
- Android Fragment 基本了解(图文介绍)
- Android Fragment的使用方法(翻译)
- 实现轮转广告带底部指示的自定义ViewPager控件
- 自定义RadioButton和ViewPager实现TabHost带滑动的页卡效果
- 使用ViewPager实现android软件使用向导功能实现步骤
- Android基础之使用Fragment适应不同屏幕和分辨率(分享)
- Android中给fragment写入参数的轻量开发包FragmentArgs简介
- Android Fragment中使用SurfaceView切换时闪一下黑屏的解决办法
- Android ViewPager相册横向移动的实现方法
- Fragment里添加ListView不要用ListFragment
- 详解Android开发中Fragment的使用
- Android中fragment嵌套fragment问题解决方法
- Android基础之Fragment与Activity交互详解
- Android基础之使用Fragment控制切换多个页面
- viewpager的layout_width="wrap_content"无效问题
- ScrollView ViewPager嵌套导致滑动冲突解决方案
- Fragment
- Android Fragment 真正的完全解析(下)
- Android之Fragment