为什么我应该使用 FragmentPagerAdapter 而不是 FragmentStatePagerAdapter?
Why should I use FragmentPagerAdapter instead of FragmentStatePagerAdapter?
我一直在寻找它,我发现的只是它们之间的区别。这不是重点。
如果您在 ViewPager
中使用 FragmentStatePagerAdapter
,您最终将执行与使用 FragmentPagerAdapter
相同的操作,但消耗的内存要少得多。如果那是真的,我为什么要使用 FragmentPagerAdapter
?
使用FragmentPagerAdapter
有什么好处?
What is the advantages of using FragmentPagerAdapter?
速度,尤其是当您的页面数量居中时:足以轻松保存在内存中,但超出了 ViewPager
想要保存的少数页面。使用 FragmentStatePagerAdapter
,当用户浏览寻呼机时,适配器会销毁一些片段并创建新片段。这需要时间,无论是直接 Java 代码还是对垃圾收集的影响。如果您在某些情况下不需要它,为什么要付出代价?
FragmentStatePagerAdapter:
如果您的页面包含更多片段,最好使用 FragmentStatePagerAdapter,因为它只会保存状态
的片段。
FragmentPagerAdapter:
由于 FragmentPagerAdapter 会将每个片段保存在内存中,因此它会消耗更多内存。
例如,如果您[在 Viewpager] 中有大约 3 个片段,其中包含较少 images/bitmaps,最好使用 FragmentPagerAdapter
为了优化更好地定义mViewPager.setOffscreenPageLimit(2);
设置在空闲状态下视图层次结构中当前页面任一侧应保留的页面数
如果您的结构依赖于嵌套片段,并且如果您需要在内部片段上使用 childFragmentManager
,则 FragmentStatePagerAdapter
可能会出现堆栈问题。当我遇到这个问题时,我将 FragmentStatePagerAdapter
更改为 FragmentPagerAdapter
,并且效果很好。
我一直在寻找它,我发现的只是它们之间的区别。这不是重点。
如果您在 ViewPager
中使用 FragmentStatePagerAdapter
,您最终将执行与使用 FragmentPagerAdapter
相同的操作,但消耗的内存要少得多。如果那是真的,我为什么要使用 FragmentPagerAdapter
?
使用FragmentPagerAdapter
有什么好处?
What is the advantages of using FragmentPagerAdapter?
速度,尤其是当您的页面数量居中时:足以轻松保存在内存中,但超出了 ViewPager
想要保存的少数页面。使用 FragmentStatePagerAdapter
,当用户浏览寻呼机时,适配器会销毁一些片段并创建新片段。这需要时间,无论是直接 Java 代码还是对垃圾收集的影响。如果您在某些情况下不需要它,为什么要付出代价?
FragmentStatePagerAdapter: 如果您的页面包含更多片段,最好使用 FragmentStatePagerAdapter,因为它只会保存状态 的片段。 FragmentPagerAdapter: 由于 FragmentPagerAdapter 会将每个片段保存在内存中,因此它会消耗更多内存。
例如,如果您[在 Viewpager] 中有大约 3 个片段,其中包含较少 images/bitmaps,最好使用 FragmentPagerAdapter
为了优化更好地定义mViewPager.setOffscreenPageLimit(2); 设置在空闲状态下视图层次结构中当前页面任一侧应保留的页面数
如果您的结构依赖于嵌套片段,并且如果您需要在内部片段上使用 childFragmentManager
,则 FragmentStatePagerAdapter
可能会出现堆栈问题。当我遇到这个问题时,我将 FragmentStatePagerAdapter
更改为 FragmentPagerAdapter
,并且效果很好。