Fragment懶加載

所謂懶加載垦梆,即Fragment 的 UI 對用戶可見時才加載數(shù)據(jù)
  • 關(guān)鍵方法public void setUserVisibleHint(boolean isVisibleToUser)

具體代碼:

package com.example.uilayout;

import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

/**
 * Created by pengshulin on 2017/5/5.
 * <p>
 * 懶加載Fragment
 */

public abstract class LazyLoadFragment extends Fragment {
    /**
     * 控件是否初完成始化
     */
    private boolean isViewCreated;
    /**
     * 是否完成數(shù)據(jù)初始化
     */
    private boolean isLoadDataCompleted;

    @Override
    public void setUserVisibleHint(boolean isVisibleToUser) {
//        只需要判斷參數(shù) isVisibleToUser 是否為 True 即可知道該 Fragment 的 UI 是否對用戶可見

        super.setUserVisibleHint(isVisibleToUser);

//        對于單個 Fragment卦溢,setUserVisibleHint 是不會被調(diào)用的,
//        只有該 Fragment 在 ViewPager 里才會被調(diào)用。
//        一個 ViewPager + Fragment 的 Demo回挽,
//        打印了一下 Log可以看到 setUserVisibleHint 的執(zhí)行順序如下
//        setUserVisibleHint: isVisibleToUser = false
//        onAttach
//        onCreate
//        setUserVisibleHint: isVisibleToUser = true
//        onCreateView
//        onActivityCreated
//        onStart
//        onResume
//        onPause
//        onStop
//        onDestroyView
//        onDestroy
//        onDetach

        if (isVisibleToUser && isViewCreated && !isLoadDataCompleted) {
            loadData();
        }
    }


    @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        View rootView = inflater.inflate(getLayoutId(), container, false);

        initView(rootView);
        isViewCreated = true;

        return rootView;
    }

    @Override
    public void onActivityCreated(@Nullable Bundle savedInstanceState) {
        super.onActivityCreated(savedInstanceState);

//        * ViewPager 默認顯示第一頁,第一頁肯定要先加載數(shù)據(jù)啊饱狂,
//        * 而且 setUserVisibleHint 的執(zhí)行順序又是在 onCreatView 之前廷没,
//        * 同時 onCreatView 需要初始化界面和修改 isViewCreated 的值。
//        * 所以就需要在 onActivityCreated 里執(zhí)行一次咯径荔。

        if (getUserVisibleHint()) {
            loadData();
        }

    }

    /**
     * 獲取布局id
     *
     * @return
     */
    protected abstract int getLayoutId();

    /**
     * 初始化控件
     *
     * @param rootView
     */
    protected abstract void initView(View rootView);

    /**
     * 加載數(shù)據(jù)
     */
    protected abstract void loadData();
}

參考地址:http://mp.weixin.qq.com/s?__biz=MzAxMTI4MTkwNQ==&mid=2650820834&idx=1&sn=694a94615494bfcaed07188e2601724a&scene=23&srcid=0808vHgojfq1vTzIpSDNBhwq#rd

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末督禽,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子总处,更是在濱河造成了極大的恐慌狈惫,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,183評論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件鹦马,死亡現(xiàn)場離奇詭異胧谈,居然都是意外死亡,警方通過查閱死者的電腦和手機荸频,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,850評論 3 399
  • 文/潘曉璐 我一進店門菱肖,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人旭从,你說我怎么就攤上這事稳强〕≈伲” “怎么了?”我有些...
    開封第一講書人閱讀 168,766評論 0 361
  • 文/不壞的土叔 我叫張陵键袱,是天一觀的道長燎窘。 經(jīng)常有香客問我,道長蹄咖,這世上最難降的妖魔是什么褐健? 我笑而不...
    開封第一講書人閱讀 59,854評論 1 299
  • 正文 為了忘掉前任,我火速辦了婚禮澜汤,結(jié)果婚禮上蚜迅,老公的妹妹穿的比我還像新娘。我一直安慰自己俊抵,他們只是感情好谁不,可當我...
    茶點故事閱讀 68,871評論 6 398
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著徽诲,像睡著了一般刹帕。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上谎替,一...
    開封第一講書人閱讀 52,457評論 1 311
  • 那天偷溺,我揣著相機與錄音,去河邊找鬼钱贯。 笑死挫掏,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的秩命。 我是一名探鬼主播尉共,決...
    沈念sama閱讀 40,999評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼弃锐!你這毒婦竟也來了袄友?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,914評論 0 277
  • 序言:老撾萬榮一對情侶失蹤霹菊,失蹤者是張志新(化名)和其女友劉穎剧蚣,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體浇辜,經(jīng)...
    沈念sama閱讀 46,465評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡券敌,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,543評論 3 342
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了柳洋。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片待诅。...
    茶點故事閱讀 40,675評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖熊镣,靈堂內(nèi)的尸體忽然破棺而出卑雁,到底是詐尸還是另有隱情募书,我是刑警寧澤,帶...
    沈念sama閱讀 36,354評論 5 351
  • 正文 年R本政府宣布测蹲,位于F島的核電站莹捡,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏扣甲。R本人自食惡果不足惜篮赢,卻給世界環(huán)境...
    茶點故事閱讀 42,029評論 3 335
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望琉挖。 院中可真熱鬧启泣,春花似錦、人聲如沸示辈。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,514評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽矾麻。三九已至纱耻,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間险耀,已是汗流浹背弄喘。 一陣腳步聲響...
    開封第一講書人閱讀 33,616評論 1 274
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留胰耗,地道東北人限次。 一個月前我還...
    沈念sama閱讀 49,091評論 3 378
  • 正文 我出身青樓芒涡,卻偏偏與公主長得像柴灯,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子费尽,可洞房花燭夜當晚...
    茶點故事閱讀 45,685評論 2 360

推薦閱讀更多精彩內(nèi)容

  • 在Fragment和ViewPager配合使用的時候赠群,ViewPager會使用預(yù)加載機制,使得我們在沒有跳轉(zhuǎn)到對應(yīng)...
    Ruheng閱讀 20,790評論 18 117
  • 原文: https://mp.weixin.qq.com/mp/profile_ext?action=home&_...
    吉兇以情遷閱讀 286評論 0 2
  • 本人已死旱幼,沒事燒紙查描。 本人已亡,沒事燒錢柏卤。 死與不死冬三,終是一紙! 亡與不亡缘缚,終上“天堂”勾笆? 紙面上的字,是我對你的...
    零雙子閱讀 158評論 0 1
  • R(閱讀原文) I(重述知識) 夸獎的技巧中桥滨,先貶后褒的效果會更好窝爪〕诔担夸獎過頭會適得其反。充滿愛的批評易接受蒲每。先褒后...
    小嬌1437閱讀 572評論 0 0
  • 《晚安詩03》 文/劉漢皇 夜在雨中濺起一圈圈漣漪纷跛,寂寞被打亂似被老鼠偷吃的薄餅,爛出參差的邊月亮小成一粒芝麻邀杏,被...
    劉漢皇閱讀 360評論 0 1