glidecache什么文件夾

文章插圖
glidecache是系統(tǒng)自帶的回收站文件夾,Glidecache文件可以刪除,不過刪除此文件以后會(huì)同時(shí)刪除手機(jī)中緩存的圖片,請(qǐng)用戶們注意 。這樣刪除緩存圖片將無(wú)法找回,它不像拍攝照片那樣刪除以后會(huì)進(jìn)入回收站 。
手機(jī)使用技巧:打開放大手勢(shì)功能--首先打開手機(jī)的“設(shè)置”應(yīng)用,然后點(diǎn)擊“智能輔助”選項(xiàng),然后點(diǎn)擊“無(wú)障礙”選項(xiàng),進(jìn)入后點(diǎn)擊“放大手勢(shì)”選項(xiàng),之后將“放大手勢(shì)”功能打開即可 。
華為手勢(shì)放大手勢(shì)功能介紹:
1、放大當(dāng)前界面-快速點(diǎn)擊屏幕三次,放大當(dāng)前界面,再快速點(diǎn)擊屏幕三次,恢復(fù)當(dāng)前界面原始尺寸 。請(qǐng)注意,連擊屏幕三次并沒有取消放大手勢(shì)功能,該開關(guān)仍然開啟,只有關(guān)閉放大手勢(shì)開關(guān)才能取消該功能 。
2、移動(dòng)并查看特定區(qū)域--在屏幕上拖移兩根或更多手指 。
3、調(diào)整縮放比例--開合兩根或更多手指 。手指分開,放大比例;手指合攏,縮小比例 。
4、暫時(shí)放大或縮小當(dāng)前界面--快速點(diǎn)擊三次屏幕并按住,則暫時(shí)放大當(dāng)前界面 。按住屏幕的同時(shí)拖移手指,可查看特定區(qū)域 。松開手指,恢復(fù)當(dāng)前界面原始尺寸 。
glide圖片緩存原理這篇文章給大家介紹下android目前使用比較廣泛的一個(gè)圖片緩存庫(kù)—Glide,這個(gè)庫(kù)是google的一位開發(fā)人員在github上的一個(gè)開源項(xiàng)目 。目前google的一些官方應(yīng)用都在使用它,所以你現(xiàn)在就開始放心的用吧 。
github地址
Glide基礎(chǔ)用法加緩存
添加Glide
在module的build.gradle中添加以下依賴:
compile 'com.github.bumptech.glide:glide:3.7.0'
/** 250 MB of cache. */
int DEFAULT_DISK_CACHE_SIZE = 250 * 1024 * 1024;
Glide.get(this).clearMemory();
Glide.get(MainActivity.this).clearDiskCache();
public class WangGlideModule implements GlideModule {
}
【glide圖片緩存原理,glidecache什么文件夾】...
public class WangGlideModule implements GlideModule {
}
public class WangGlideModule implements GlideModule {
}
public class WangGlideModule implements GlideModule {
}
public class WangGlideModule implements GlideModule {
}
public class WangGlideModule implements GlideModule {
}
public class WangGlideModule implements GlideModule {
}
public class WangGlideModule implements GlideModule {
運(yùn)行后手機(jī)文件夾里面多出來一個(gè)GlideDisk文件夾,這個(gè)就是磁盤緩存的目錄
安卓jar包在哪在工程目錄下,在main文件夾下,新建一個(gè)libs文件夾,然后將jar包復(fù)制到這個(gè)路徑,點(diǎn)擊jar包,右鍵點(diǎn)擊add as library就行了 。
glide的緩存機(jī)制閱讀本文需要先了解 Glide加載流程
首先介紹一下Glide中對(duì)圖片資源的封裝類: EngineResource
在活動(dòng)緩存中,使用了一個(gè)map用來存放EngineResource對(duì)象,這里需要注意一個(gè)操作,就是這個(gè)EngineResource對(duì)象是用WeakReference包裹的,并且通過ReferenceQueue監(jiān)聽了EngineResource的回收,在回收的時(shí)候會(huì)清理當(dāng)前的活動(dòng)緩存內(nèi)容;
下面分析一下源碼是如果實(shí)現(xiàn)的:
首先,自定義一個(gè)WeakReference類,將key和resource傳進(jìn)入(用于在WeakReference回收的時(shí)候釋放),傳入一個(gè)ReferenceQueue對(duì)象,用于監(jiān)聽WeakReference回收
開啟一個(gè)子線程,在循環(huán)中監(jiān)聽ReferenceQueue的返回值,通過這個(gè)返回值,判斷WeakReference有沒有回收,監(jiān)聽的方法是ReferenceQueue.remove(),這是一個(gè)阻塞方法;所以要開子線程;
LruResourceCache繼承了LruCache類,關(guān)于LruCache類,簡(jiǎn)單提一下,具體的可以參考我之前的博客 LruCache實(shí)現(xiàn) ,LruCache繼承了LinkedHashMap,LinkedHashMap有一個(gè)特點(diǎn),就get后的數(shù)據(jù)會(huì)移動(dòng)到隊(duì)列,這就是Lru思想:固定一個(gè)容量,put的時(shí)候如果超過容量了,將最后一個(gè)節(jié)點(diǎn)刪除,get的時(shí)候?qū)et的這個(gè)節(jié)點(diǎn)移動(dòng)到隊(duì)列的頭部;
onItemEvicted()方法是LruCache的一個(gè)空方法,調(diào)用的時(shí)機(jī)是在put的時(shí)候判斷是否超過容量,如果超過容量了,就淘汰最后一個(gè)節(jié)點(diǎn),并調(diào)用這個(gè)方法;
活動(dòng)緩存和內(nèi)存緩存都是緩存在內(nèi)存中的,活動(dòng)緩存緩存的是正在使用的圖片資源,當(dāng)圖片不使用時(shí)會(huì)放到內(nèi)存緩存中,提出活動(dòng)緩存的目的:?jiǎn)我坏膬?nèi)存緩存由于Lru的淘汰機(jī)制會(huì)導(dǎo)致圖片加載不穩(wěn)定
首先介紹一個(gè)磁盤緩存方案DiskLruCache(非Google官方編寫,但獲得官方認(rèn)證),關(guān)于這個(gè)磁盤緩存方案的理解可以看郭林的這片文章:
Android DiskLruCache完全解析,硬盤緩存的最佳方案
從上一篇文章知道,Glide加載操作是通過 Engine 來驅(qū)動(dòng)的
Engine的load()中,首先嘗試從 活動(dòng)緩存 和 內(nèi)存緩存 獲取緩存,如果沒有緩存再啟動(dòng)EngineJob和DecodeJob; 上面介紹了緩存的獲取,下面看一下緩存的存放,肯定是在獲取到圖片后的回調(diào)中存放的
在DecodeJob獲取到圖片數(shù)據(jù)后,會(huì)回調(diào)很多接口,在回調(diào)中會(huì)將其放入 活動(dòng)緩存 ,當(dāng)圖片不在使用的時(shí)候,就會(huì)放入內(nèi)存緩存,根據(jù)上面介紹的活動(dòng)緩存規(guī)則,當(dāng) EngineResource 計(jì)數(shù)為0時(shí)就應(yīng)該放入內(nèi)存緩存;
當(dāng)資源引用為0,回調(diào)onResourceReleased(),從活動(dòng)緩存移除,放入內(nèi)存緩存;
上面介紹了活動(dòng)緩存和內(nèi)存緩存的存放和獲取,下面看一看磁盤緩存的存取;
還記得 DataFetcherGenerator 接口嗎?這個(gè)接口是DecodeJob用于獲取數(shù)據(jù)的,有三個(gè)具體的實(shí)現(xiàn):
我們?cè)谏弦黄唧w介紹的是網(wǎng)絡(luò)文件的獲取,這里的磁盤緩存使用的就是 DataCacheGenerator(緩存文件) 這個(gè)Generator了
上篇文章知道DecodeJob是一個(gè)Runnable任務(wù),在run()會(huì)調(diào)用runWrapped(),在runWrapped()中會(huì)做三種事情:
在runWrapped()的解碼操作中會(huì)執(zhí)行decode(),在decode()中,會(huì)disk put操作;
Glide的磁盤緩存是基于DiskLruCache 實(shí)現(xiàn)的,Glide直接使用的是DiskLruCacheWrapper對(duì)象對(duì)DiskLruCache 的封裝;
推薦閱讀
- 一覽調(diào)整圖片尺寸步驟介紹 手機(jī)怎么修改照片像素大小
- 一覽全部小米手機(jī)型號(hào)和價(jià)格 小米手機(jī)報(bào)價(jià)及圖片大全
- 第五人格動(dòng)漫圖片唯美 第五人格圖片動(dòng)漫版大全
- 一覽所有召喚獸圖片大全 夢(mèng)幻西游召喚獸大全圖鑒
- 什么是元宵節(jié)圖片 什么是元宵
- 聲母有多少個(gè)字母,字母表 聲母韻母整體認(rèn)讀音節(jié)圖片
- 一文認(rèn)清楚各種苦菜介紹 農(nóng)村苦菜圖片大全名稱
- 詳解坎高犬的優(yōu)點(diǎn)和缺點(diǎn) 坎高犬圖片大全
- 免費(fèi)制作九宮格圖片詳細(xì)教程 朋友圈九宮格配圖素材怎么制作
- 圖片過大紙張顯示不出來怎么辦
