viewPager+Fragment的生命周期和预加载问题

viewPager+Fragment的生命周期和预加载问题


      在项目中用到了viewPager + Fragment 的组合进行页面的滑动切换。在viewPager

中加入了3个Fragment:FragmentA,FragmentB,FragmentC,分别在每个Fragment

中的生命周期方法中加入log日志。来查看页面切换时,Fragment生命周期的调用。


       进入FragmentActivity主页,加载第一个FragmentA时发现:除了加载FragmentA的

同时,也加载了FragmentB。如图:



     在项目中,用到ViewPager+FragmentFragment会进行预加载,例如你在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的位置












  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值