viewpager设置缓存数量:
mViewPager.setOffscreenPageLimit(1);
后,来回切换只会调用onCreateView() -> onDestroyView()生命函数,因为ViewPager里对Fragment的回收和创建时,如果Fragment已经创建过了,那么只会调用onCreateView() -> onDestroyView()生命函数。
实现懒加载,并且限制加载缓存为1,需要:
1 ,在oncreateview里防止反复创建view,但是不为空直接返回,网络加载的数据下来操作界面会报空指针,可能是ondestroyview里面做了操作,找到的view的id给清空了(用黄油刀的情况下),所以就不用做view是否为空的判断了。
2,在ondestroyview里可以控制是否加载完数据的标志,第二次进来会继续走oncreateview,onactivitycreated,的顺序,不控制isLoadDataCompleted的话,因为类没有销毁,只是在走周期函数,所以isLoadDataCompleted还是为true,最终结果就是显示有view的界面。数据并没有去加载。
总结:1,实现懒加载,就不用去限制viewpager的加载缓存了。没有意义。处理起来还烦。
2,实现懒加载又实现限制,就必须注意oncreateview,和ondestroyview的操作,这样会造成不是相邻的项目切换的话会有白板,因为相当于重新创建view,然后加载数据显示。
网友评论