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() {
    }
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章