Glide三級快取理解詳細
- 一、普通的三級快取
- 二、Glide三級快取分類:活動快取、記憶體快取、磁盤快取
- 三、三級快取范圍:
- 四、三級快取的作用:
- 五、活動快取的說明:
- 六、記憶體快取的說明:
- 七、磁盤快取的說明:
- 八、Glide三級快取的使用
- 九、Glide的快取使用
- 九、總結
- 共勉:向前行進,
本文對Glide的三級快取進行主要的文字描述,希望能幫助大家加深對Glide的快取理解,
Glide官網:
https://github.com/bumptech/glide
一、普通的三級快取
記憶體快取,優先加載,速度最快
本地快取,次優先加載,速度快
網路快取,最后加載,速度慢,浪費流量
為什么要進行三級快取
三級快取策略,最實在的意義就是減少不必要的流量消耗,增加加載速度,
二、Glide三級快取分類:活動快取、記憶體快取、磁盤快取
這個三級快取是Glide自定義的三級快取策略,跟我們之前接觸到的三級快取(記憶體,本地,網路)不一樣,
三、三級快取范圍:
活動快取:在某個Activity范圍,頁面退出該快取就不存在
記憶體快取:某個App范圍,應用完全退出就不存在
磁盤快取:整個系統,只要不洗掉資料,就一直存在
四、三級快取的作用:
活動快取:分擔記憶體快取的負擔,
記憶體快取:加快資料讀取
磁盤快取:進行永久性保持
五、活動快取的說明:
活動快取并不是我們熟悉的記憶體快取,是Glide自己定義的一種快取策略,
本質上就是HasMap,用了一次就快取,以后需要就直接拿,不需要就清除這個快取,
該策略的存在也是為了及時釋放記憶體,不需要等等整個應用退出再釋放記憶體,減輕應用記憶體負擔,
活動快取比記憶體快取小,如果活動快取滿了,會自動寫到記憶體快取,
系統會對記憶體快取進行自動管理,只要不是快速存放大記憶體檔案,并且不一直占有記憶體物件,都不會記憶體溢位,
六、記憶體快取的說明:
記憶體快取是系統自身會管理的,但是可以繼承LruCache,做進一步管理
七、磁盤快取的說明:
磁盤快取本質是本地檔案快取,但是通過普通的檔案寫入讀取效率不高,
Glide中使用了DiskLruCache框架進行資料保存和讀取,
效率高的主要原因是:磁盤快取對圖片檔案進行了加密和壓縮處理,
八、Glide三級快取的使用
1、優先從活動快取獲取
2、活動快取沒有就再記憶體快取中尋找
3、記憶體快取沒有,就去磁盤快取讀取
4、磁盤快取沒有就去網路獲取本地檔案讀取
整個思路和我們普通接觸到的三級快取思路是一樣的,
普通的三級快取對所有檔案有適用,
Glide三級快取針對的是圖片型別檔案,
其實對音頻/視頻檔案也有參考價值,其他檔案的快取作用就不大了,
九、Glide的快取使用
Glide.with(this).load(url).into(imageView);//默認是開啟記憶體快取和磁盤快取的,
1、記憶體快取
Glide.with(this)
.load(url)
.skipMemoryCache(true)//關閉記憶體快取
.into(imageView);
2、磁盤快取
Glide.with(this)
.load(url)
.diskCacheStrategy(DiskCacheStrategy.AUTOMATIC)
.into(imageView);
一個 diskCacheStrategy( ) 方法就可以調整他的硬碟快取策略,其中可以傳入的引數有四種:
DiskCacheStrategy.ALL : 表示既快取原始圖片,也快取轉換過后的圖片,
DiskCacheStrategy.NONE: 表示不快取任何內容,
DiskCacheStrategy.RESOURCE: 表示只快取原始圖片,
DiskCacheStrategy.RESULT: (已過期,新api4.11修改為后面兩個)表示只快取轉換過后的圖片(默認選項),
DiskCacheStrategy.DATA: 表示只快取轉換過后的圖片,
DiskCacheStrategy.AUTOMATIC 表示智能判斷選擇模式(默認選項),
記憶體快取和磁盤快取是可以同時設定的,
Glide圖片的快取是最多存在兩份:
1是活動或記憶體快取
2是磁盤快取,
圖片快取不會同時存在活動快取和記憶體快取,
九、總結
Glide的活動快取和記憶體快取本質是我們熟悉的記憶體快取,
Glide的磁盤快取本質是我們熟悉的本地快取,
不過Glide對里面每個快取都進行了較大優化,
總而言之就是為了更快更好,
面試程序,問到對Glide的快取理解,主要對Glide三級快取說明它們的范圍、作用、以及磁盤快取相對普通本地檔案快取的優點即可,
共勉:向前行進,
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/291891.html
標籤:其他
