Fragment懒加载数据

来源:互联网 发布:淘宝手机版订单回收站 编辑:程序博客网 时间:2024/05/21 09:59

Fragment懒加载可解决如下:一个Activity里面可能会以viewpager(或其他容器)与多个Fragment来组合使用,而每个Fragment都需要去加载数据,或从本地加载、或从网络加载,那么在Activty刚创建的时候就会初始化大量的资源,会变得卡慢。Fragment可见时,才执行加载数据的操作,即Fragment的懒加载,setUserVisibleHint判断是否可见。

public abstract class LazyFragment extends Fragment {  14.    protected boolean isVisible;  15.    /** 16.     * 在这里实现Fragment数据的缓加载. 17.     * @param isVisibleToUser 18.     */  19.    @Override  20.    public void setUserVisibleHint(boolean isVisibleToUser) {  21.        super.setUserVisibleHint(isVisibleToUser);  22.        if(getUserVisibleHint()) {  23.            isVisible = true;  24.            onVisible();  25.        } else {  26.            isVisible = false;  27.            onInvisible();  28.        }  29.    }  30.  31.    protected void onVisible(){  32.        lazyLoad();  33.    }  34.  35.    protected abstract void lazyLoad();  36.  37.    protected void onInvisible(){}  38.}  public class OpenResultFragment extends LazyFragment{  02.    // 标志位,标志已经初始化完成。  03.    private boolean isPrepared;  04.  05.    @Override  06.    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {  07.        Log.d(LOG_TAG, "onCreateView");  08.        View view = inflater.inflate(R.layout.fragment_open_result, container, false);  09.        //XXX初始化view的各控件  10.    isPrepared = true;  11.        lazyLoad();  12.        return view;  13.    }  14.  15.    @Override  16.    protected void lazyLoad() {  17.        if(!isPrepared || !isVisible) {  18.            return;  19.        }  20.        //填充各控件的数据  21.    }  22.  23.}  
原创粉丝点击