glide 的快取型別有 2 種(記憶體快取、檔案快取),每種型別的快取又各有2級,共計 4 級快取:
一級記憶體快取:activeresource
二級記憶體快取:lruresourcecache
一級檔案快取:
二級檔案快取:
通過hashmap + weakreference實現
final mapactiveengineresources = new hashmap<>();
static final class resourceweakreference extends weakreference> {}
複製**
通過lrucache實現
public class lruresourcecache extends lrucache> implements memorycache
複製**
加入時機:decode完成
移除時機:清空檔案快取
resourcecachegenerator
載入被後期處理過(取樣、變形)的
/**
* generates from cache files
* containing downsampled/transformed resource data.
*/複製**
resourcecachekey
/**
* a cache key for downsampled and transformed resource data + any requested signature.
*/複製**
datacachegenerator
從資料換獲取的原始
/**
* generates from cache files
* containing original unmodified source data.
*/複製**
datacachekey
/**
* a cache key for original source data + any requested signature.
*/複製**
@startuml
inte***ce key
class datacachekey
class resourcecachekey
key <-- datacachekey
key <-- resourcecachekey
@enduml
複製**
Glide原始碼解析
基本使用方法 glide.with this asdrawable load this into imageview glide.with 方法用於建立乙個載入的例項。with 方法可以接收context activity或者fragment型別的引數。load 方法,這個方法用於指定待載入的資源。...
Glide 原始碼解析 之 ModelLoader
在datafetchergenerator.startnext 載入資料時 以實現類sourcegenerator為例 會通過decodehelper去拿modelloader,然後拿到dataloader,然後使用dataloader中的fetcher去load資料。modelloader 有著非...
Glide原始碼剖析 快取篇
glide主要分為記憶體快取和硬碟快取 既然是快取功能,就必然會有用於進行快取的key 這裡在第11行呼叫了fetcher.getid 方法獲得了乙個id字串,這個字串也就是我們要載入的的唯一標識,比如說如果是一張網路上的的話,那麼這個id就是這張的url位址。接下來在第12行,將這個id連同著si...