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);
发布了79 篇原创文章 · 获赞 62 · 访问量 8万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章