标签:
Activity里面可能会以viewpager(或其他容器)与多个Fragment来组合使用,而如果每个fragment都需要去加载数据,或从本地加载,或从网络加载,那么在这个activity刚创建的时候就变成需要初始化大量资源。有可能会导致卡顿。
就需要用到Fragment里的setUserVisibleHint这个方法里。
解决办法
package com.xgs.panku.ui;
import android.app.Fragment;
/**
* 类描述:当切换到这个fragment的时候初始化控件
* 作者:@zyx
* 时间:2016/8/22 11:10
* 邮箱:zhangyuanxiao@monster-tld.com
*/
public abstract class BaseFragment extends Fragment{
//判断是否显示
protected boolean isVisible;
/**
* 在这里实现Fragment数据的缓加载.
* @param isVisibleToUser
*/
@Override
public void setUserVisibleHint(boolean isVisibleToUser) {
super.setUserVisibleHint(isVisibleToUser);
if(getUserVisibleHint()){
isVisible = true;
//加载数据
onVisible();
}else{
isVisible = false;
onInvisible();
}
}
/**
* fragment被设置为可见时调用
*/
protected void onVisible(){
isLoading();
}
/**
* fragment被设置为不可见时调用
*/
protected void onInvisible(){}
//获取数据的抽象方法
protected abstract void isLoading();
}
调用方式:
标签:
原文地址:http://www.cnblogs.com/zyx20160131/p/5794929.html