ViewPager同时加载多个fragment,以实现多tab页面快速切换, 但是fragment初始化时就会预加载后面的页面,为了提高用户体验,实现加载延迟。这时我们会用到getUserVisibleHint()与setUserVisibleHint()这两个方法。
当fragment被用户可见时,setUserVisibleHint()会调用且传入true值,当fragment不被用户可见时,setUserVisibleHint()则得到false值。
结论
1 viewpager监听切换tab事件,tab切换一次,执行一次setUserVisibleHint()方法
2 setUserVisibleHint() 在fragment所有生命周期之前初始化 3 activity生命周期 和 fragment生命周期 时序并不是按序来的,也就是说fragment的oncreate方法时序并不一定在activity的oncreate方法之后。
使用
@Override
public void setUserVisibleHint(boolean isVisibleToUser) {
super.setUserVisibleHint(isVisibleToUser);
if (isVisibleToUser) {
//相当于Fragment的onResume,判断此fragment是否可见
load();
} else {
//相当于Fragment的onPause
}
}