如何在FragmentStatePagerAdapter中销毁旧的片段
如何在FragmentStatePagerAdapter中销毁旧的片段
我想实现这个功能:
我使用了一个带有FragmentStatePagerAdapter的ViewPager。
我从这个页面的示例开始:
http://developer.android.com/reference/android/support/v4/app/FragmentStatePagerAdapter.html
这是我的ViewPager适配器:
public static class MyAdapter extends FragmentStatePagerAdapter { public MyAdapter(FragmentManager fm) { super(fm); } @Override public int getCount() { return NUM_ITEMS; } @Override public Fragment getItem(int position) { return ArrayListFragment.newInstance(position); } @Override public void destroyItem(ViewGroup container, int position, Object object) { super.destroyItem(container, position, object); } }
我的ViewPager的每个页面都包含一个带有一些数据的ListView。
目前当我在ViewPager中切换到新页面时,内存会非常快速地增加。
我应该如何移除旧的片段?
我也使用了这个,但它没有起作用:
public void destroyItem(ViewGroup container, int position, Object object) { FragmentManager manager = ((Fragment) object).getFragmentManager(); FragmentTransaction trans = manager.beginTransaction(); trans.remove((Fragment) object); trans.commit(); super.destroyItem(container, position, object); }
当我快速切换到一个新页面或旧页面时,还有1-2秒的延迟。是否有任何技巧可以消除这种延迟?如果我切换到一个新页面并等待2秒,然后下一次切换就不再有延迟了。
在Nexus 7上进行了测试。