FragmentPagerAdapter的理解

Fragment+LazyViewPager实现app主页的页面切换,使用的适配器为FragmentPagerAdapter。但是在使用的时候因为某个Fragment页面布局太复杂,导致切换卡顿。于是使用了ViewPager,因为有预加载,所以只要不是快速切换是可以避免卡顿现象的。但是在调试的时候发现了个问题,FragmentPagerAdapter这个适配器是不会立即销毁Fragment的,它和FragmentStatePagerAdapter的区别就是FragmentMManager会把每一个fragment放到内存里保存起来,下次使用的时候直接使用(请注意这一句话)。但是debug发现,切换的时候仍然会重新走每个Fragment的onCreateView方法,难道重新创建了Fragment?然后翻了下FragmentPagerAdapter的文档,发现了这么一句话

This version of the pager is best for use when there are a handful of typically more static fragments to be paged through, such as a set of tabs. The fragment of each page the user visits will be kept in memory,though its view hierarchy may be destroyed when not visible. This can result in using a significant amount of memory since fragment instances can hold on to an arbitrary amount of state. For larger sets of pages, considerFragmentStatePagerAdapter.  

原来如此,调试下,发现确实不会走onCreate和onDestroy这两个方法,只是走了 onCreateView。FragmentPagerAdapter只是保存呢了Fragment的对象在内存中,当下次使用时使用的也是这个对象(当然,如果长时间不用,FragmentManager会执行destroyItem这个方法,断掉与fragment的联系,fragment对象便有可能会被GC回收掉)。

附上Fragment的生命周期


参考:FragmentPagerAdapter与FragmentStatePagerAdapter区别

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值