Fragment懒加载

Fragment的resume和onPause是依赖于Activity的;不是真正的状态

应用场景:viewPager+Fragment+ListView中

viewPager缓存左右两个页面,会刷新listview数据,

直接改变当前的listview,出现错误,加载异常等问题;

实现:

public abstract class LazyFragment extends BaseFragment {

    protected boolean isVisible;

    // 标志位,标志已经初始化完成。
    private boolean isPrepared = false;

    @Override
    protected void initViewsAndEvents() {

        isPrepared = true;

        //第一个显示的页面,会先触发懒加载,此处必须重新加载
        onVisible();

    }

    /**
     * 在这里实现Fragment数据的缓加载.
     */
    @Override
    public void setUserVisibleHint(boolean isVisibleToUser) {
        super.setUserVisibleHint(isVisibleToUser);
        if (getUserVisibleHint()) {
            isVisible = true;
            onVisible();
        } else {
            isVisible = false;
            onInvisible();
        }
    }

    protected void onVisible() {
        if (isPrepared) {
            Log.d(this.getClass().getName(), "---lazyLoad----");
            lazyLoad();
        }
    }

    protected abstract void lazyLoad();

    protected void onInvisible() {
    }
}

 

你可能感兴趣的:(Android开发)