注意事项
1.采用FragmentStatePagerAdapter
FragmentStatePagerAdapter和FragmentPagerAdapter的主要区别是:
FragmentStatePagerAdapter会及时回收fragment
而FragmentPagerAdapter会把fragment一直放在内存当中
那么在当前需求下肯定是要用FragmentStatePagerAdapter比较合适
2.FragmentStatePagerAdapter设置contentVp.setOffscreenPageLimit(1);
这个设置是防止viewpager缓存过多的fragment但是不用设置成0
因为设置0默认最小值1
3.懒加载的问题上一篇说过了:
https://blog.csdn.net/random_7474/article/details/81205513
4.需要特别注意的一点,虽然很小的细节但是坑了我足有两天···
我们通常喜欢把所有的Fragment new出来然后放在一个list里面
在adapter的getItem(int position)的时候在用list.get(position)来返回fragment
在这个需求下面是不行的,会导致fragment无法回收一直占用内存,我现在的方案是:
在adapter的getItem(int position)的时候直接return NewsContentFragment.getInstance()
也就是直接new
当前方案解决了问题,内存中只存在3个NewsContentFragment,并且配合懒加载不会加载下一个fragment的数据