每次getItem()触发时都会创建一个片段?

时间:2013-06-17 16:25:54

标签: android sdk

Android docs中,有FragmentStatePageAdapter每次Fragment触发时都会getItem实例化。这样理智吗?我已经检查过,每次刷卡都会触发,这意味着每次都会创建一个Fragment?这是对的吗?

@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;
}

我对Android很新,所以我只想对此进行健全性检查。这听起来不对。

1 个答案:

答案 0 :(得分:1)

这与FragmentStatePagerAdapter一样正常。

根据the documentation

  

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

因此FragmentStatePagerAdapter可以帮助您保持较低的内存占用率。为此,它可能会破坏不可见的碎片。

通常,您可以设置ViewPager的屏幕外页面数量,以便ViewPager.setOffscreenPageLimit()保留在内存中。