是否可以在扩展FragmentStatePagerAdapter
的类中将片段列表保存为类引用,而不是基于位置在getItem(int position)
中实例化片段(这基本上确保只有2个片段是在内存中,每当片段获得GC时,再次调用getItem)。例如,我的ViewPagerAdapter
如下所示
public class ViewPagerAdapter extends FragmentStatePagerAdapter {
List<? extends ViewPagerFragment> fragments;
public ViewPagerAdapter(FragmentManager fm, List<? extends ViewPagerFragment> fragments) {
super(fm);
this.fragments = fragments;
}
@Override
public Fragment getItem(int position) {
return fragments.get(position);
}
@Override
public int getCount() {
return fragments.size();
}
@Override
public CharSequence getPageTitle(int position) {
return fragments.get(position).getPageTitle();
}
}
答案 0 :(得分:1)
1。可以保存Fragment对象,因为它可能包含一些对象(第一次已经提取/创建)。
2. 默认它在内存中保存3个片段 A [B C D] E (假设您处于 C 片段)
3。您可以随时使用setOffscreenPageLimit(int)
将处于空闲状态的视图层次结构中当前页面任一侧应保留的页数设置为空闲状态。超出此限制的页面将在需要时从适配器重新创建。
4. 永远不要抓住该片段的View
个对象。