为什么我应该使用FragmentPagerAdapter而不是FragmentStatePagerAdapter?

时间:2017-08-01 17:39:33

标签: android android-viewpager fragmentpageradapter fragmentstatepageradapter

我一直在寻找它,我发现的只是它们之间的区别。这不是重点。

如果您在FragmentStatePagerAdapter中使用ViewPager,您最终会像使用FragmentPagerAdapter那样做,但会消耗更少的内存。如果这是真的,我为什么要使用FragmentPagerAdapter

使用FragmentPagerAdapter有什么好处?

3 个答案:

答案 0 :(得分:5)

  

使用FragmentPagerAdapter有什么好处?

速度,特别是当你有一个中间数量的页面时:足以容易地保留在内存中,但超出了ViewPager想要保持自己的极少数。使用FragmentStatePagerAdapter,当用户导航寻呼机时,适配器会销毁一些片段并创建新片段。这需要时间,无论是直接Java代码还是对垃圾收集的影响。如果你在某些情况下不需要,为什么付出代价?

答案 1 :(得分:1)

<强> FragmentStatePagerAdapter: 如果您的页面包含更多片段,最好使用FragmentStatePagerAdapter,因为它只保存状态 片段。 的 FragmentPagerAdapter: 因为FragmentPagerAdapter会将每个片段保留在内存中,因此会消耗更多的内存。

例如,如果你有大约3个片段[在Viewpager中]包含较少的图像/位图,最好使用FragmentPagerAdapter

为了更好地优化以定义 mViewPager.setOffscreenPageLimit(2); 将处于空闲状态的视图层次结构中当前页面任一侧应保留的页数设置为

答案 2 :(得分:1)

如果您的结构依赖于嵌套片段,并且如果需要在内部片段上使用childFragmentManager,那么FragmentStatePagerAdapter可能会出现堆栈问题。当我遇到此问题时,我已将FragmentStatePagerAdapter更改为FragmentPagerAdapter,并且效果很好。