欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

Fragment的setUserVisibleHint方法實(shí)現(xiàn)懶加載

    一個Activity以ViewPager(或其他容器)與多個Fragment來結(jié)合使用,如果每個Fragment都要去加載數(shù)據(jù)(本地或網(wǎng)絡(luò)),那么這個activity剛創(chuàng)建的時候就要初始化大量的資源。那能不能做到當(dāng)切換到這個fragment的時候才去初始化呢?

站在用戶的角度思考問題,與客戶深入溝通,找到弓長嶺網(wǎng)站設(shè)計與弓長嶺網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗(yàn),讓設(shè)計與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個性化、用戶體驗(yàn)好的作品,建站類型包括:做網(wǎng)站、網(wǎng)站設(shè)計、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣、國際域名空間、網(wǎng)站空間、企業(yè)郵箱。業(yè)務(wù)覆蓋弓長嶺地區(qū)。

    答案就在setUserVisibleHint里。該方法告訴系統(tǒng)這個Fragment的UI是否可見。所以我們通過該方法,在Fragment可見時再去初始化就行了。

public abstract class LazyFragment extends Fragment {

    protected boolean isVisible;

    /**

     *在這里實(shí)現(xiàn)Fragment數(shù)據(jù)的緩加載。

     */

    @override

    public void setUserVisibleHint(boolean isVisibleToUser) {

        super.setUserVisibleHint(isVisibleToUser);

        if (getUserVisibleHint()) {

            isVisible = true;

            onVisible();

        } else {

            isVisible = false;

            onInvisible();

        }

    }

    protected void onVisible() {

        lazyLoad();

    }

    protected abstract void lazyLoad();

    protected void onInvisible(){}

}

問題:為什么不在getUserVisibleHint里面直接處理事情,而是寫一個抽象函數(shù)呢?

    這樣做是為了重用。因?yàn)閒ragment中,我們還需要創(chuàng)建視圖,可能還需要在該Fragment不可見時進(jìn)行其他小量的初始化操作(如初始化需要通過AIDL調(diào)用的遠(yuǎn)程服務(wù))。而setUserVisibleHint()是在onCreateView之前調(diào)用的,在視圖未初始化時,在lazyload當(dāng)中使用就會報空指針。而把lazyLoad抽離成一個方法,那么它的子類就可以這樣做:

    public class OpenResultFragment extends LazyFragment {

        //標(biāo)志位,標(biāo)志已經(jīng)初始化完成(防止onCreateView未調(diào)用之前就調(diào)用該方法導(dǎo)致空指針)

        private Boolean isPrepared;

        @override

        public View onCreateView() {

            View view = inflater.inflate(R.layout.fragment, container, false);

            //初始化控件

            isPrepared = true;

            lazyLoad();

            return view;

        }

        @override

        protected void lazyLoad() {

            //在調(diào)用了onCreateView后并且fragment的UI是可見的就填充數(shù)據(jù)

            //如果是要下載網(wǎng)絡(luò)數(shù)據(jù),不是給view填充數(shù)據(jù)之類的,就不需要isPrepared參數(shù)了

            if (!isPrepared || !isVisible) return;

            //填充各控件的數(shù)據(jù)

        }

    }

標(biāo)題名稱:Fragment的setUserVisibleHint方法實(shí)現(xiàn)懶加載
文章分享:http://aaarwkj.com/article24/gihdce.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站制作標(biāo)簽優(yōu)化、網(wǎng)站內(nèi)鏈虛擬主機(jī)、企業(yè)網(wǎng)站制作、建站公司

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

搜索引擎優(yōu)化
日本美女阴部毛茸茸视频| 在线 | 一区二区三区四区| 99热这里只有精品中文| 老熟妇奂伦一区二区三区| 91精品国产老熟女在线| 老熟妇仑乱换频一区二区| 欧美日韩一区二区三区大片| 欧美日韩精品乱码在线观看| 国产女主播精品视频一区| 国产亚洲综合精品综合区| 精品欧美不卡在线播放| 午夜宅男在线视频观看| 日韩欧美日日夜夜精品| 日韩电影一区二区在线观看中文字幕| av天堂男人站在线观看| 国产精品久久中文字幕网 | av真人青青小草一区二区欧美 | 欧美国产免费高清视频| 亚洲精品成av人在线观看| 国产又大又黄又粗的黄色| 少妇按摩高潮呻吟av| 日韩亚洲国产欧美在线观看 | 国产三级精品三级精品在一区| 中文字幕av日韩在线| 国产三级网站在线观看播放| 日本a级片免费在线观看| 少妇一夜一次一区二区| 蜜桃视频中文字幕二区三区| 日本精品一区二区不卡| 一二三日韩电影在线观看| 九色国产一区二区三区| 青青草视频免费观看高清在线观看新| 黑寡妇精品欧美一区二区毛 | 国产精品日韩精品在线| 中文字幕国产精品一二区| 水蜜桃成人在线视频免费观看| 日韩免费毛片在线观看| 国产视频一区2区三区| 国产激情盗摄一区二区三区| 日韩黄色成人免费片子| 精品一区二区视频在线观看网站|