在之前我寫過SDWebImage的使用方法,主要是用與獲取網路圖片,沒有看過的朋友可以看看。 這篇文章將主要介紹SDWebImage的實現原理,主要針對於獲取網路圖片的原理,如果沒有第三方我們該怎麼去做,當然我知識用文字去介紹,我想花大把的時間去深入理解我們用不到的東西,是很不值得的,不過興趣的朋友
在之前我寫過SDWebImage的使用方法,主要是用與獲取網路圖片,沒有看過的朋友可以看看。
這篇文章將主要介紹SDWebImage的實現原理,主要針對於獲取網路圖片的原理,如果沒有第三方我們該怎麼去做,當然我知識用文字去介紹,我想花大把的時間去深入理解我們用不到的東西,是很不值得的,不過興趣的朋友可以去其他博客上查找相應信息,畢竟學無止境。好了下麵開始進入正題。
1)當我門需要獲取網路圖片的時候,我們首先需要的便是URl沒有URl什麼都沒有,獲得URL後我們SDWebImage實現的並不是直接去請求網路,而是檢查圖片緩存中有沒有和URl相關的圖片,如果有則直接返回image,如果沒有則進行下一步。
2)當圖片緩存中沒有圖片時,SDWebImage依舊不會直從網路上獲取,而是檢查沙盒中是否存在圖片,如果存在,則把沙盒中對應的圖片存進image緩存中,然後按著第一步的判斷進行。
3)如果沙盒中也不存在,則顯示占點陣圖,然後根據圖片的下載隊列緩存判斷是否正在下載,如果下載則等待,避免二次下載。如果不存則創建下載隊列,下載完畢後將下載操作從隊列中清除,並且將image存入圖片緩存中。
4)刷新UI(當然根據實際情況操作)將image存入沙盒緩存。