8

FragmentPagerAdapter与ViewPager有什么区别,OffScreenLimit设置为1,FragmentStatePagerAdapterFragmentPagerAdapter与ViewPager之间的差异,OffScreenLimit设置为1和FragmentStatePagerAdapter?

关于FragmentPagerAdapter谷歌的指南说:

寻呼机的这个版本是最适合使用的时候也有 通常更静态的片段少数通过分页,如一套 标签。用户访问的每个页面的片段将保留在 内存中,尽管其视图层次结构在不可见时可能会被破坏。 这可能导致使用大量的内存,因为片段 实例可以保持任意数量的状态。对于页面较大的集合 ,请考虑FragmentStatePagerAdapter。

而关于FragmentStatePagerAdapter

这个版本的寻呼机的时候有页面大量 ,变得更像一个列表视图是比较有用的。当用户看不到页面时,他们的整个片段可能被破坏,只保留 该片段的保存状态。这使得寻呼机能够保持更少的与每个访问页面相关联的存储器而不是 FragmentPagerAdapter,代价是 在页面之间切换时潜在的更多开销。

我想如果我将offscreenlimit设置为1,它会销毁当前片段下两个片段之外的所有片段,它的行为与FragmentStatePagerAdapter类似。它是否正确?

+0

的([FragmentPagerAdapter和FragmentStatePagerAdapter之间的不同]可能的复制https://stackoverflow.com/questions/18747975/difference- fragmentpageradapter间 - 和 - fragmentstatepageradapter) – Prince

回答

11

其区别与它在文档中的写法完全相同。但它可能有点混乱。

FragmentPagerAdapter保持其在FragmentManager片段分离状态,同时它们是不可见(虽然它们在屏幕外极限边界)和FragmentStatePagerAdapterFragmentManager删除它们。

offscreenPageLimit有点不同。它内的所有片段都保持附着在用户界面上。一旦他们结束,他们是removeddetached

你可以看到它在FragmentPagerAdapter(线121)和FragmentStatePagerAdapter的源(线路144)

相关问题