我想一个Android程序员基本上都会经常使用viewpager来实现图片轮播,页面滑动切换等功能,但在Viewpager+Fragment的时候添加Fragment如果不做处理,基本上初始化的时候Fragment里面的控件,网络请求,UI更新都会全部完成,那么问题来了,页面都还没有显示出来,数据Duang、Duang、Duang的都加载好网络吃不消呀,还会影响刚启动的响应速度,是不是很不爽,我想应该有办法让fragment显示出来的时候再去请求网络,更新UI,的确有,而且很简单,下面来看看:
实现Fragment懒加载
在Fragment中重写 setUserVisibleHint方法,而且这个方法是优于onCreate()方法的,所以也可以作为Fragment的一个生命周期来看待,它会通过isVisibleToUser告诉我们当前Fragment我们是否可见,我们可以在可见的时候再进行网络加载
@Override
public void setUserVisibleHint(boolean isVisibleToUser) {
if (isVisibleToUser&&GetInfo) {
GetInfo = false;//可见后只执行一次,自己声明一个变量
GetProblem();//初始化自己需要执行的操作
}
super.setUserVisibleHint(isVisibleToUser);
}
效果图下图:
不光是只在setUserVisibleHint方法中执行网络请求还可以在里面实现初始化界面控件的操作,一些耗时会影响运行速度的操作都可以放在里面在可见的时候执行,这个就看个人需求了,总之赖加载就通过这个方法实现了,是不是很简单,赶紧动手试一试吧!