ViewPager+Fragment懶加載總結(jié)與改進(jìn)

前言:

?? ?? ? 關(guān)于懶加載,在網(wǎng)上看的很多方案,都很不錯(cuò)搔体,但總有點(diǎn)小缺憾,比如:

?? ?? ? 1.Fragment第一次創(chuàng)建不加載數(shù)據(jù)

?? ?? ? 2.解決了第一次創(chuàng)建就能加載數(shù)據(jù)的問題半醉,但第一個(gè)Fragment不加載數(shù)據(jù)

? ? ? ? 3.Fragment view其實(shí)未被初始化疚俱,但卻執(zhí)行了加載數(shù)據(jù)的操作,那么當(dāng)數(shù)據(jù)要更新到界面上缩多,就會(huì)出錯(cuò)呆奕。

?? ?? ? 經(jīng)過自己的研究分析,總結(jié)了一下比較完美的解決方案:



首先先分析一下每次切換的時(shí)候瞧壮,F(xiàn)ragment有可能是處于什么樣的狀態(tài):

分為三種情況:? ? ?

說明:當(dāng)viewpager.setOffscreenPageLimit(n),一次加載了所有的fragment.那么只有第一和第二種情況登馒。

當(dāng)viewpager.setOffscreenPageLimit(n),沒有一次加載所有的fragment,那么下面三種情況都有咆槽。

1.第一次被創(chuàng)建????isViewInitiated=false,不加載圈纺,????執(zhí)行onActivityCreated()????isViewInitiated=true; 加載

2.切換后未被銷毀秦忿,再次切換回來重新可見:isViewInitiated=true,加載????不執(zhí)行onActivityCreated()????

3.切換后被銷毀,再次切換回來蛾娶,重新創(chuàng)建:isViewInitiated=true,(但實(shí)際未初始化) 加載(有可能出錯(cuò)) 灯谣,執(zhí)行onActivityCreated(),isViewInitiated=true; 加載

解決方法1:銷毀的時(shí)候onDestoryView() 將isViewInitiated=false;每次切換可見都會(huì)重新刷新數(shù)據(jù)


1.第一次被創(chuàng)建????isViewInitiated=false蛔琅,不加載胎许,????執(zhí)行onActivityCreated()????isViewInitiated=true; isDataInitiated =false,加載 isDataInitiated =true;

2.切換后未被銷毀回來:isViewInitiated=true,不加載????不執(zhí)行onActivityCreated()

3.切換后被銷毀重新創(chuàng)建:isViewInitiated=true,(但實(shí)際未初始化),因?yàn)閕sDataInitiated =true罗售,所以不加載辜窑,執(zhí)行onActivityCreated(),雖然已真正有初始化了寨躁,但是isDataInitiated =true穆碎,所以不加載

即只有第一次創(chuàng)建的時(shí)候回去加載數(shù)據(jù),此后無論切換的時(shí)候是不是重新創(chuàng)建的职恳,都不加載所禀,需要手動(dòng)加載數(shù)據(jù)方面。如:下拉刷新等。

解決方法2:只有首次創(chuàng)建會(huì)加載數(shù)據(jù)色徘,手動(dòng)調(diào)用prepareFetchData()恭金,傳true即可強(qiáng)制刷新


最后,子Fragment只需要繼承父類褂策,實(shí)現(xiàn)抽象方法蔚叨,在fetchData()里做網(wǎng)絡(luò)請(qǐng)求或者其他耗時(shí)操作即可


注意:用第二種方法,第三種情況:會(huì)發(fā)現(xiàn)再次回到該Fragment辙培,可能會(huì)是空白頁見蔑水,因?yàn)関iew已被銷毀。所以建議:一次性加載所有Fragment(只初始化View扬蕊,不加載數(shù)據(jù))搀别。

最后~如果看完本文有點(diǎn)懵的話,可以先閱讀以下幾篇文章尾抑,再回來看可能會(huì)好點(diǎn)~

死磕Fragment的生命周期

ViewPager+Fragment LazyLoad最優(yōu)解 - 簡書

謝謝看到這里的小伙伴歇父,第一次寫,沒寫好再愈,請(qǐng)見諒榜苫。撒花~

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市翎冲,隨后出現(xiàn)的幾起案子垂睬,更是在濱河造成了極大的恐慌,老刑警劉巖抗悍,帶你破解...
    沈念sama閱讀 211,948評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件驹饺,死亡現(xiàn)場離奇詭異,居然都是意外死亡缴渊,警方通過查閱死者的電腦和手機(jī)赏壹,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,371評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來衔沼,“玉大人蝌借,你說我怎么就攤上這事≈敢希” “怎么了菩佑?”我有些...
    開封第一講書人閱讀 157,490評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長欣舵。 經(jīng)常有香客問我擎鸠,道長,這世上最難降的妖魔是什么缘圈? 我笑而不...
    開封第一講書人閱讀 56,521評(píng)論 1 284
  • 正文 為了忘掉前任劣光,我火速辦了婚禮袜蚕,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘绢涡。我一直安慰自己牲剃,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,627評(píng)論 6 386
  • 文/花漫 我一把揭開白布雄可。 她就那樣靜靜地躺著凿傅,像睡著了一般。 火紅的嫁衣襯著肌膚如雪数苫。 梳的紋絲不亂的頭發(fā)上聪舒,一...
    開封第一講書人閱讀 49,842評(píng)論 1 290
  • 那天,我揣著相機(jī)與錄音虐急,去河邊找鬼箱残。 笑死,一個(gè)胖子當(dāng)著我的面吹牛止吁,可吹牛的內(nèi)容都是我干的被辑。 我是一名探鬼主播,決...
    沈念sama閱讀 38,997評(píng)論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼敬惦,長吁一口氣:“原來是場噩夢(mèng)啊……” “哼盼理!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起俄删,我...
    開封第一講書人閱讀 37,741評(píng)論 0 268
  • 序言:老撾萬榮一對(duì)情侶失蹤宏怔,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后抗蠢,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體举哟,經(jīng)...
    沈念sama閱讀 44,203評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,534評(píng)論 2 327
  • 正文 我和宋清朗相戀三年迅矛,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片潜叛。...
    茶點(diǎn)故事閱讀 38,673評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡秽褒,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出威兜,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 34,339評(píng)論 4 330
  • 正文 年R本政府宣布宠漩,位于F島的核電站磨澡,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏笔宿。R本人自食惡果不足惜犁钟,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,955評(píng)論 3 313
  • 文/蒙蒙 一棱诱、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧涝动,春花似錦迈勋、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,770評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至米愿,卻和暖如春厦凤,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背育苟。 一陣腳步聲響...
    開封第一講書人閱讀 32,000評(píng)論 1 266
  • 我被黑心中介騙來泰國打工较鼓, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人宙搬。 一個(gè)月前我還...
    沈念sama閱讀 46,394評(píng)論 2 360
  • 正文 我出身青樓笨腥,卻偏偏與公主長得像,于是被迫代替她去往敵國和親勇垛。 傳聞我的和親對(duì)象是個(gè)殘疾皇子脖母,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,562評(píng)論 2 349

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