Fragment 懶加載實(shí)戰(zhàn)

1

Fragment 懶加載是什么意思嘲碱?

所謂懶加載,即Fragment 的 UI 對用戶可見時才加載數(shù)據(jù)。

以前我沒啥經(jīng)驗(yàn),一股腦的從服務(wù)器拉取數(shù)據(jù)之后立馬把數(shù)據(jù)綁定到 Fragment 的 UI 組件上单鹿,可能不符合部分產(chǎn)品的需求。

那么懶加載的技術(shù)關(guān)鍵點(diǎn)是什么深纲?

根據(jù)定義:

所謂懶加載仲锄,即Fragment 的 UI 對用戶可見時才加載數(shù)據(jù)。

需要判斷何時 Fragment 的 UI 才對用戶可見湃鹊。

如何判斷 Fragment 的 UI 是否對用戶可見儒喊?

Fragment 提供了一個方法 public void setUserVisibleHint(boolean isVisibleToUser),API 的注釋如下:

Set a hint to the system about whether this fragment's UI is currently visible to the user. This hint defaults to true and is persistent across fragment instance state save and restore.

所以币呵,只需要判斷參數(shù) isVisibleToUser 是否為 True 即可知道該 Fragment 的 UI 是否對用戶可見怀愧。

setUserVisibleHint 在什么時候調(diào)用?

對于單個 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

2

代碼

為了方便,封裝一個基類 LazyLoadFragment蛤奢,提供一個 loadData() 方法供調(diào)用去加載數(shù)據(jù)

等等鬼癣,為什么 loadData() 會在兩個地方執(zhí)行?

在 setUserVisibleHint 方法里執(zhí)行我還能理解啤贩,為什么 onActivityCreated 也要執(zhí)行呢待秃?

因?yàn)椋琕iewPager 默認(rèn)顯示第一頁痹屹,第一頁肯定要先加載數(shù)據(jù)啊章郁,而且 setUserVisibleHint 的執(zhí)行順序又是在 onCreatView 之前,同時 onCreatView 需要初始化界面和修改 isViewCreated 的值。所以就需要在 onActivityCreated 里執(zhí)行一次咯暖庄。

3

wait...

文章寫到這里聊替,我聽到了一個不同的聲音

ViewPager 不是有 setOffscreenPageLimit(int limit) 方法嗎?我調(diào)用 viewPager.setOffscreenPageLimit(0) 不就行了嗎培廓?

我想說:思路是對的惹悄,但是這樣做沒效果。為什么肩钠?看一下 setOffscreenPageLimit 的方法實(shí)現(xiàn)就知道了

limit 默認(rèn)為 1 泣港,就算傳一個 0 也無濟(jì)于事啊。(ps:留言下方有人提出可以修改ViewPager源碼)

本文總結(jié)

懶加載的技術(shù)關(guān)鍵點(diǎn)

setUserVisibleHint 的執(zhí)行順序

為什么 ViewPager.setOffscreenPageLimit(0) 無效价匠?

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末当纱,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子踩窖,更是在濱河造成了極大的恐慌惫东,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,826評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件毙石,死亡現(xiàn)場離奇詭異,居然都是意外死亡颓遏,警方通過查閱死者的電腦和手機(jī)徐矩,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,968評論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來叁幢,“玉大人滤灯,你說我怎么就攤上這事÷妫” “怎么了鳞骤?”我有些...
    開封第一講書人閱讀 164,234評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長黍判。 經(jīng)常有香客問我豫尽,道長,這世上最難降的妖魔是什么顷帖? 我笑而不...
    開封第一講書人閱讀 58,562評論 1 293
  • 正文 為了忘掉前任美旧,我火速辦了婚禮,結(jié)果婚禮上贬墩,老公的妹妹穿的比我還像新娘榴嗅。我一直安慰自己,他們只是感情好陶舞,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,611評論 6 392
  • 文/花漫 我一把揭開白布嗽测。 她就那樣靜靜地躺著,像睡著了一般肿孵。 火紅的嫁衣襯著肌膚如雪唠粥。 梳的紋絲不亂的頭發(fā)上疏魏,一...
    開封第一講書人閱讀 51,482評論 1 302
  • 那天,我揣著相機(jī)與錄音厅贪,去河邊找鬼蠢护。 笑死,一個胖子當(dāng)著我的面吹牛养涮,可吹牛的內(nèi)容都是我干的葵硕。 我是一名探鬼主播,決...
    沈念sama閱讀 40,271評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼贯吓,長吁一口氣:“原來是場噩夢啊……” “哼懈凹!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起悄谐,我...
    開封第一講書人閱讀 39,166評論 0 276
  • 序言:老撾萬榮一對情侶失蹤介评,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后爬舰,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體们陆,經(jīng)...
    沈念sama閱讀 45,608評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,814評論 3 336
  • 正文 我和宋清朗相戀三年情屹,在試婚紗的時候發(fā)現(xiàn)自己被綠了坪仇。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,926評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡垃你,死狀恐怖椅文,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情惜颇,我是刑警寧澤皆刺,帶...
    沈念sama閱讀 35,644評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站凌摄,受9級特大地震影響羡蛾,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜望伦,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,249評論 3 329
  • 文/蒙蒙 一林说、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧屯伞,春花似錦腿箩、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,866評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春钧惧,著一層夾襖步出監(jiān)牢的瞬間暇韧,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,991評論 1 269
  • 我被黑心中介騙來泰國打工浓瞪, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留懈玻,地道東北人。 一個月前我還...
    沈念sama閱讀 48,063評論 3 370
  • 正文 我出身青樓乾颁,卻偏偏與公主長得像涂乌,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子英岭,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,871評論 2 354

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

  • python練手遇到的一個問題花了一點(diǎn)時間寫個統(tǒng)一公式湾盒,不用麻煩的分各種類,如果有人測試出錯誤請?jiān)u論通知诅妹,本人新手...
    知不知上不知知病閱讀 1,181評論 0 0
  • 打開微博罚勾,“無人問我粥可溫”刷滿了微博的頁面。于是吭狡,關(guān)于這個話題尖殃,有些興趣。 網(wǎng)名為一個喵先生的網(wǎng)友寫了一篇文...
    棉曦閱讀 381評論 1 3
  • 今天是周末划煮,每個周末都是忙忙碌碌分衫,好想慢下來的節(jié)奏,但對我來說確是奢求般此。 吃了早飯,囑咐女兒帶好東...
    其樂媽咪閱讀 236評論 0 0
  • 一周總結(jié) 1. 搜索軟件:學(xué)會使用關(guān)鍵詞搜索牵现,提高工作效率 2. 郵箱日歷聯(lián)系人:郵箱日歷聯(lián)系人同步铐懊,能夠?qū)⒐ぷ魅?..
    伊森田慧慧閱讀 175評論 0 0