Android中FragmentPagerAdapter与FragmentStatePagerAdapter使用和区别

FragmentPagerAdapter 和 FragmentStatePagerAdapter区别:
在使用方式上两者没有区别,区别主要体现在缓存上

FragmentPagerAdapter :

  • 1、getItem只调用一次,调用一次将返回位置的Fragment缓存到mFragmentManager,下次切换调用instantiateItem直接从mFragmentManager的缓存拿,在mCurTransaction.attach(fragment);触发Fragment周期方法
  • 2、Fragment切换的时候,销毁缓存, 仅销毁Fragent的视图onDestroyView
  • 3、Fragment切换的时候,重新加载显示Fragment,仅创建视图onCreateView

    FragmentPagerAdapter会把Fragment进行缓存,切换的时候虽然ViewPager会有缓存的创建和销毁但仅仅是创建和销毁Fragment的视图不会对Fragment对象有影响

    FragmentStatePagerAdapter:

    • 不会对Fragment进行缓存,每次切换的时候ViewPager销毁缓存和创建的时候都是直接销毁Fragment–>onDestroy, 创建的时候直接重新创建Fragment—>onCreate
    • 使用的时候:由于FragmentPagerAdapter会对Fragment对象进行缓存,如果项目有很多个Fragment这个时候,超过6个,会内存浪费, 就选着FragmentPagerAdapter
    • 当Fragment嵌套使用的时候,内层的Fragment切换使用的mFragmentManager必须是getChildFragmentManager内层的Fragment的生命周期才会起作用
      Fragment fragment = mFragmentManager.findFragmentByTag(name);
      mCurTransaction.attach(fragment);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值