圖片框架 - Glide 4.11.0源碼走讀

本篇文章對Glide最新4.11.0版本做一個(gè)宏觀解析,目的是把握下Glide的大框架哆键,有了宏觀了解之后掘托,再剖析細(xì)節(jié)就比較容易了。

源碼解析:

Glide.with(this).load(url).into(imageView);
按如上代碼籍嘹,總結(jié)流程圖和類圖來從執(zhí)行流程和類關(guān)系兩個(gè)維度來解析下Glide的基礎(chǔ)框架闪盔。

一、流程圖

1.1 with

with過程

with主要干兩件事:

  • 圖片加載綁定對應(yīng)頁面生命周期辱士;
    生命周期分為application 和 非application兩種泪掀。分別通過ApplicationLifecycle、ActivityFragmentLifecycle來管理生命周期颂碘。

  • 初始化RequestManager;

1.2 load

load過程

流程以加載String url為例异赫。

load主要干一件事情:

  • 通過RequestManager初始化RequestBuilder。確認(rèn)加載的資源類型以及一些參數(shù)的初始化头岔,為后續(xù)into做準(zhǔn)備塔拳。
    1.3 into
    into過程

    into主要干了三件事:
  • 封裝并發(fā)起request。
  • request獲取圖片數(shù)據(jù)峡竣。
  • 將圖片顯示到View上靠抑。

request獲取圖片邏輯:


Engine圖片資源獲取管理邏輯

圖片獲取方式

優(yōu)先級:當(dāng)前正在使用的緩存 > LruCache > 網(wǎng)絡(luò)/磁盤

二、類圖

這里只梳理下核心類的關(guān)系


Glide類關(guān)系圖

簡單總結(jié)下理解:

Glide.with(this).load(url).into(imageView);

Glide是一個(gè)單例的調(diào)用入口類适掰。
with:初始化RequestManager颂碧,綁定生命周期。
load:加載資源并初始化RequestBuilder类浪。
into:由RequestBuilder構(gòu)建Request和Target交由RequestManager去處理载城。

核心功能全部交給RequestManager來處理:
通過with、load费就、into三板斧后诉瓦,給到RequestManager的工作內(nèi)容:

  • 綁定對應(yīng)頁面生命周期。
  • 處理Request獲取圖片資源力细。
  • 將圖片資源加載到Target對應(yīng)的目標(biāo)控件上垦搬。

RequestManager左膀右臂TargetTracker、RequestTracker艳汽,前者負(fù)責(zé)綁定頁面生命周期猴贰,后者負(fù)責(zé)剩下兩項(xiàng)工作。

Request通過Engine來管理圖片加載河狐,按:活躍內(nèi)存>LruCache>網(wǎng)絡(luò)/磁盤 優(yōu)先級獲取圖片資源米绕。具體圖片獲取由對應(yīng)的DataFetcher來處理瑟捣,然后交給DecodeJob去做圖片的解碼。最后通過回調(diào)返回給Target去設(shè)置圖片栅干。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
禁止轉(zhuǎn)載迈套,如需轉(zhuǎn)載請通過簡信或評論聯(lián)系作者。
  • 序言:七十年代末碱鳞,一起剝皮案震驚了整個(gè)濱河市桑李,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌窿给,老刑警劉巖贵白,帶你破解...
    沈念sama閱讀 218,682評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異崩泡,居然都是意外死亡禁荒,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,277評論 3 395
  • 文/潘曉璐 我一進(jìn)店門角撞,熙熙樓的掌柜王于貴愁眉苦臉地迎上來呛伴,“玉大人,你說我怎么就攤上這事谒所∪瓤担” “怎么了?”我有些...
    開封第一講書人閱讀 165,083評論 0 355
  • 文/不壞的土叔 我叫張陵劣领,是天一觀的道長姐军。 經(jīng)常有香客問我,道長剖踊,這世上最難降的妖魔是什么庶弃? 我笑而不...
    開封第一講書人閱讀 58,763評論 1 295
  • 正文 為了忘掉前任衫贬,我火速辦了婚禮德澈,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘固惯。我一直安慰自己梆造,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,785評論 6 392
  • 文/花漫 我一把揭開白布葬毫。 她就那樣靜靜地躺著镇辉,像睡著了一般。 火紅的嫁衣襯著肌膚如雪贴捡。 梳的紋絲不亂的頭發(fā)上忽肛,一...
    開封第一講書人閱讀 51,624評論 1 305
  • 那天,我揣著相機(jī)與錄音烂斋,去河邊找鬼屹逛。 笑死础废,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的罕模。 我是一名探鬼主播评腺,決...
    沈念sama閱讀 40,358評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼淑掌!你這毒婦竟也來了蒿讥?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,261評論 0 276
  • 序言:老撾萬榮一對情侶失蹤抛腕,失蹤者是張志新(化名)和其女友劉穎芋绸,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體兽埃,經(jīng)...
    沈念sama閱讀 45,722評論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡侥钳,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,900評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了柄错。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片舷夺。...
    茶點(diǎn)故事閱讀 40,030評論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖售貌,靈堂內(nèi)的尸體忽然破棺而出给猾,到底是詐尸還是另有隱情,我是刑警寧澤颂跨,帶...
    沈念sama閱讀 35,737評論 5 346
  • 正文 年R本政府宣布敢伸,位于F島的核電站,受9級特大地震影響恒削,放射性物質(zhì)發(fā)生泄漏池颈。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,360評論 3 330
  • 文/蒙蒙 一钓丰、第九天 我趴在偏房一處隱蔽的房頂上張望躯砰。 院中可真熱鬧,春花似錦携丁、人聲如沸琢歇。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,941評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽李茫。三九已至,卻和暖如春肥橙,著一層夾襖步出監(jiān)牢的瞬間魄宏,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,057評論 1 270
  • 我被黑心中介騙來泰國打工存筏, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留宠互,地道東北人塔次。 一個(gè)月前我還...
    沈念sama閱讀 48,237評論 3 371
  • 正文 我出身青樓,卻偏偏與公主長得像名秀,于是被迫代替她去往敵國和親励负。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,976評論 2 355