- SDWebImage的簡(jiǎn)單介紹
a) SDWebImage支持異步圖片下載+緩存,提供了UIImageView+WebCacha的分類,方便使用位岔。
b) 圖片文件緩存的時(shí)間最長(zhǎng)是1周
c) 內(nèi)存緩存使用的是NSCache
d) 最大并發(fā)數(shù)是6,可以經(jīng)過(guò)屬性調(diào)整
e) 支持GIF
f) 緩存圖片的名稱使用MD5散列函數(shù)堡牡,對(duì)url進(jìn)行md5抒抬,結(jié)果是32個(gè)字符長(zhǎng)度的字符串。
g) 接收到內(nèi)存警告怎么處理
i. 接收到內(nèi)存警告通知執(zhí)行clearMemory方法晤柄,清理內(nèi)存緩存
ii. 接收到應(yīng)用程序?qū)⒁K止通知擦剑,執(zhí)行clearDisk方法,清理磁盤(pán)緩存,將緩存的文件夾直接刪除惠勒,重新創(chuàng)建新的緩存文件夾赚抡。
iii. 接收到進(jìn)入后臺(tái)通知,執(zhí)行backgroundCleanDisk方法纠屋,后臺(tái)清理磁盤(pán) - SDWebImage的底層原理
a) 從分類入口setImageWithURL涂臣,會(huì)先把展位圖顯示出來(lái)
b) 然后進(jìn)入SDWebImageManage管理類,交給SDImageCache從緩存中查找圖片是否已經(jīng)下載
c) 先從內(nèi)存圖片緩存中查找是否有圖片售担,找到有緩存就把圖片回傳到管理類在回傳到分類入口顯示
d) 如果內(nèi)存中沒(méi)有該圖片的緩存肉康,生成操作添加到隊(duì)列從磁盤(pán)查找圖片文件
e) 根據(jù)url的md5字符串,查找磁盤(pán)緩存圖片灼舍,如果找到則回主線程進(jìn)行結(jié)果的回調(diào),添加到內(nèi)存緩存中(空閑內(nèi)存過(guò)小涨薪,會(huì)先清空內(nèi)存緩存)
f) 如果磁盤(pán)沒(méi)有讀取到圖片骑素,說(shuō)明所有緩存都沒(méi)有該圖片,則需要回調(diào)到管理類刚夺,生成下載管理器下載圖片
g) 下載圖片是又NSURLConnetction來(lái)做献丑,實(shí)現(xiàn)了相關(guān)的代理判斷圖片下載狀態(tài)和下載進(jìn)度。
h) 圖片數(shù)據(jù)下載完成后侠姑,會(huì)交給SDWebImageDecoder做圖片解碼處理创橄,這里是一個(gè)隊(duì)列操作,不會(huì)拖慢主線程
i) 解碼完成莽红,會(huì)到管理類妥畏,進(jìn)行圖片的緩存到內(nèi)存和磁盤(pán)的操作,最終回到分類顯示出圖片
j) 在SDWebCache初始化的時(shí)候安吁,會(huì)注冊(cè)消息通知醉蚁,在內(nèi)存警告和后臺(tái)的時(shí)候清理內(nèi)存緩存,應(yīng)用結(jié)束的時(shí)候清理過(guò)期的圖片鬼店。 - SDWebImage庫(kù)的作用:
a) UIImageView(WebCache)分類网棍,入口封裝
b) SDWebImageManager 對(duì)圖片的管理中繼站,向下調(diào)用緩存(SDWebCache)和網(wǎng)絡(luò)下載(SDWebImageDownloader)操作妇智,已接響應(yīng)他們的回調(diào)
c) SDImageCache根據(jù)url進(jìn)行了內(nèi)存和磁盤(pán)的兩種存儲(chǔ)和讀取操作滥玷,以及一些緩存的清理操作
d) SDWebImageDownloader根據(jù)URL向網(wǎng)絡(luò)下載圖片數(shù)據(jù)等操作
e) SDWebImageDecoder,異步對(duì)圖片進(jìn)行一次解壓巍棱,能夠提高效率惑畴。 - SDWebImage怎么封裝
a) 在UIImageView分類封裝2個(gè)方法,下載圖片的方法和占位圖的
b) 常用的還有封裝一個(gè)回調(diào)下載圖片狀態(tài)和進(jìn)度的《下載成功航徙,下載失敗桨菜,下載進(jìn)度》 - SDWebImage和YYWebImage對(duì)Gif圖片展示的內(nèi)存、CPU使用分析
a) SDWebImage內(nèi)存暴漲,CPU占用低
b) YYWebImage內(nèi)存低了倒得,CPU居高不下
c) SDWebImage是把GIF所有的圖片都先加載到內(nèi)存中泻红,通過(guò)animatedImageWithImages的方式播放動(dòng)畫(huà)。這樣的好處就是霞掺,播放時(shí)直接從內(nèi)存中讀取資源就好了谊路。典型的以空間換取流暢度
d) YYWebImage的處理方式正好相反,讀取Gif需要展示的當(dāng)前image菩彬,進(jìn)行解析展示缠劝,不用為gif的每一張圖片開(kāi)辟空間,每次都是讀取一張image就好了骗灶。以速度換空間惨恭。
e) 后期YYWebImage好像解決了這個(gè)cpu高占用的問(wèn)題,使用了一個(gè)自定義的UIImageView 耙旦,YYAnimatedImageView來(lái)播放GIF
f) 具體使用哪個(gè)脱羡,就需要根據(jù)不同的業(yè)務(wù)需求進(jìn)行決定了。
SDWebImage
最后編輯于 :
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
- 文/潘曉璐 我一進(jìn)店門(mén)绢陌,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)态罪,“玉大人,你說(shuō)我怎么就攤上這事下面「淳保” “怎么了?”我有些...
- 文/不壞的土叔 我叫張陵沥割,是天一觀的道長(zhǎng)耗啦。 經(jīng)常有香客問(wèn)我,道長(zhǎng)机杜,這世上最難降的妖魔是什么帜讲? 我笑而不...
- 正文 為了忘掉前任,我火速辦了婚禮椒拗,結(jié)果婚禮上似将,老公的妹妹穿的比我還像新娘获黔。我一直安慰自己,他們只是感情好在验,可當(dāng)我...
- 文/花漫 我一把揭開(kāi)白布玷氏。 她就那樣靜靜地躺著,像睡著了一般腋舌。 火紅的嫁衣襯著肌膚如雪盏触。 梳的紋絲不亂的頭發(fā)上,一...
- 那天块饺,我揣著相機(jī)與錄音赞辩,去河邊找鬼。 笑死授艰,一個(gè)胖子當(dāng)著我的面吹牛辨嗽,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播淮腾,決...
- 文/蒼蘭香墨 我猛地睜開(kāi)眼糟需,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了来破?” 一聲冷哼從身側(cè)響起,我...
- 序言:老撾萬(wàn)榮一對(duì)情侶失蹤忘古,失蹤者是張志新(化名)和其女友劉穎徘禁,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體髓堪,經(jīng)...
- 正文 獨(dú)居荒郊野嶺守林人離奇死亡送朱,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
- 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了干旁。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片驶沼。...
- 正文 年R本政府宣布玉雾,位于F島的核電站,受9級(jí)特大地震影響轻要,放射性物質(zhì)發(fā)生泄漏复旬。R本人自食惡果不足惜,卻給世界環(huán)境...
- 文/蒙蒙 一冲泥、第九天 我趴在偏房一處隱蔽的房頂上張望驹碍。 院中可真熱鬧壁涎,春花似錦、人聲如沸志秃。這莊子的主人今日做“春日...
- 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)洽损。三九已至庞溜,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間碑定,已是汗流浹背流码。 一陣腳步聲響...
- 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像碘赖,于是被迫代替她去往敵國(guó)和親驾荣。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
推薦閱讀更多精彩內(nèi)容
- 前不久做了一個(gè)生成快照的需求普泡,其中用到 SDWebImage 來(lái)下載圖片播掷,在使用該框架的過(guò)程中也遇到了一些問(wèn)題,索...
- 讀完這篇文章你可以自己寫(xiě)一個(gè) 輕量級(jí)別的SDWebImage神器撼班,這篇文章類似源碼解析歧匈。但不同的是,不僅僅是解析砰嘁,...
- 項(xiàng)目中一直都有使用SDWebImage件炉,對(duì)這個(gè)框架有一定的了解,但是體系卻未能貫通矮湘,因此特地整理下,主要參考: i...
- 圖片下載的這些回調(diào)信息存儲(chǔ)在SDWebImageDownloader類的URLOperations屬性中斟冕,該屬性是...
- 早上賴床危害多多 6妙計(jì)助你快速起床 引導(dǎo)語(yǔ):即使不是嚴(yán)寒的冬天,很多人清早都喜歡賴床缅阳,尤其是周末時(shí)候賴床更嚴(yán)重磕蛇。...