1

In the Android docs, there is a FragmentStatePageAdapter that instantiates a Fragment every time getItem fires. Is this sane? I've checked, and this fires every time I swipe, which means it creates a Fragment every time? Is this correct?

@Override
public Fragment getItem(int i) {
    Fragment fragment = new DemoObjectFragment();
    Bundle args = new Bundle();
    // Our object is just an integer :-P
    args.putInt(DemoObjectFragment.ARG_OBJECT, i + 1);
    fragment.setArguments(args);
    return fragment;
}

I'm pretty new to Android, so I just wanted a sanity check on this. It doesn't sound right.

4

1 回答 1

1

这是正常的FragmentStatePagerAdapter

根据文档

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

因此,FragmentStatePagerAdapter 完成了所有繁重的工作,以帮助您将内存占用保持在相对较低的水平。为此,它可能会破坏不可见的 Fragment。

通常,您可以设置 ViewPager 的屏幕外页面数,以使用ViewPager.setOffscreenPageLimit().

于 2013-06-17T16:57:03.153 回答