Glide 原始碼解析 之 快取

2021-09-11 13:25:45 字數 1398 閱讀 8040

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...