注意事項
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的數據