一、Fragment的两个方法
- void setUserVisibleHint(boolean isVisibleToUser)
- boolean getUserVisibleHint()
二、方法介绍
setUserVisibleHint
:在onCreate方法和onCreateView方法之间执行的一个方法,同时该方法也是Fragment显示的时候执行
getUserVisibleHint
:获得Fragment的可见状态
public abstract class BaseFragment extends Fragment {
/** Fragment当前状态是否可见 */
protected boolean isVisible;
@Override
public void setUserVisibleHint(boolean isVisibleToUser) {
super.setUserVisibleHint(isVisibleToUser);
if(getUserVisibleHint()) {
isVisible = true;
onVisible();
} else {
isVisible = false;
onInvisible();
}
}
/**
* 可见
*/
protected void onVisible() {
lazyLoad();
}
/**
* 不可见
*/
protected void onInvisible() {
}
/**
* 延迟加载
* 子类必须重写此方法
*/
protected abstract void lazyLoad();
}
三、使用
public class ActivityPageFragment extends BaseFragment{
//首先执行该方法
@Override
protected void lazyLoad() {
if (!isVisible ) {
return;
}
//在这里对所需数据进行加载
new LoadActivityListAsyncTask().execute(Const.REFRESH_INDEX);
new PrizeListAsyncTask().execute();
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle
savedInstanceState) {
return inflater.inflate(R.layout.fragment_activity_page, container, false);
}
ViewPager.setOffscreenPageLimit(int limit)
,其中参数可以设为0或者1,参数小于1时,会默认用1来作为参数,未设置之前,ViewPager会默认加载两个Fragment。
四、关闭预加载
mViewPager = (ViewPager) findViewById(R.id.fl_tabcontent);
mViewPager.setOffscreenPageLimit(1);//关闭预加载,默认一次只加载一个Fragment