首页 文章

FragmentPagerAdapter与ViewPager之间的区别与OffScreenLimit设置为1和FragmentStatePagerAdapter?

提问于
浏览
9

FragmentPagerAdapter 与ViewPager和OffScreenLimit设置为1和 FragmentStatePagerAdapter 之间有什么区别?

关于 FragmentPagerAdapter Google的指南说:

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

关于 FragmentStatePagerAdapter

当存在大量页面时,此版本的寻呼机更有用,更像列表视图 . 当页面对用户不可见时,它们的整个片段可能被破坏,只保留该片段的保存状态 . 与FragmentPagerAdapter相比,这允许寻呼机保持与每个被访问页面相关联的更少的存储器,代价是在页面之间切换时可能具有更多的开销 .

我想如果我将offscreenlimit设置为1,它会破坏当前片段的下两个片段之外的所有片段,并且它的行为类似于FragmentStatePagerAdapter . 它是否正确?

1 回答

  • 11

    区别与文档中的差异完全相同 . 但它可能有点令人困惑 .

    FragmentPagerAdapterFragmentManager 中的片段保持在分离状态,同时它们不可见(当它们超出屏幕外限制边界时)并且 FragmentStatePagerAdapter 将它们从 FragmentManager 中删除 .

    offscreenPageLimit 有点不同 . 其中的所有片段都保持与UI的连接 . 一旦他们结束,他们要么removed,要么detached .

    你可以在FragmentPagerAdapter(第121行)和FragmentStatePagerAdapter(第144行)的来源中看到它

相关问题