Glide原始碼剖析 快取篇

2021-08-30 02:33:12 字數 656 閱讀 1751

glide主要分為記憶體快取和硬碟快取;

既然是快取功能,就必然會有用於進行快取的key

這裡在第11行呼叫了fetcher.getid()方法獲得了乙個id字串,這個字串也就是我們要載入的的唯一標識,比如說如果是一張網路上的的話,那麼這個id就是這張的url位址。

接下來在第12行,將這個id連同著signature、width、height等等10個引數一起傳入到enginekeyfactory的buildkey()方法當中,從而構建出了乙個enginekey物件,這個enginekey也就是glide中的快取key了。

可見,決定快取key的條件非常多,即使你用override()方法改變了一下的width或者height,也會生成乙個完全不同的快取key。

其實說到記憶體快取的實現,非常容易就讓人想到lrucache演算法(least recently used),也叫近期最少使用演算法。它的主要演算法原理就是把最近使用的物件用強引用儲存在linkedhashmap中,並且把最近最少使用的物件在快取值達到預設定值之前從記憶體中移除。glide記憶體快取的實現自然也是使用的lrucache演算法。不過除了lrucache演算法之外,glide還結合了一種弱引用的機制,共同完成了記憶體快取功能。

Glide 原始碼解析 之 快取

glide 的快取型別有 2 種 記憶體快取 檔案快取 每種型別的快取又各有2級,共計 4 級快取 一級記憶體快取 activeresource 二級記憶體快取 lruresourcecache 一級檔案快取 二級檔案快取 通過hashmap weakreference實現 final mapact...

GLide 原始碼 面試

glide.with this load url into imageview with load url 1.glide是支援url字串 本地路徑等等載入形式的 2.它提供了asbitmap 和asgif 這兩個方法 它們分別又建立了乙個bitmaptyperequest和giftypereque...

Glide原始碼解析

基本使用方法 glide.with this asdrawable load this into imageview glide.with 方法用於建立乙個載入的例項。with 方法可以接收context activity或者fragment型別的引數。load 方法,這個方法用於指定待載入的資源。...