内容页fragment注意事项

380 阅读1分钟

###类似新闻内容页,viewpager加载多个fragment并且经常切换的需求,这种情况下的内存需要特别注意,一不小心处理不当很容易出现内存暴涨,频繁触发gc页面卡顿,甚至oom的情况,针对这种需求总结下面几点注意事项

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