一、数据存储方式
资源采用 Key-Value 形式保存,通过对资源路径的转化生成唯一Key,Value即Bitmap。
二、三级缓存
1.活动缓存
当使用gilde加载图片,gilde先去活动缓存查找是否有对应key,有则直接使用,无则再去内存缓存查找
活动缓存 对象每使用一次则计数+1,当计数为0即对象未被使用后则以弱引用的方式进行GC并同时返回key/value到内存缓存保存。
注:应用关闭后活动缓存会清空。
2.内存缓存
当在内存缓存找到key使用后,则把 key/value剪切到活动缓存,无则继续去磁盘缓存查找。
内存缓存采用LruCache方式保存,即当内存缓存容量溢出后移除最近最少使用的对象。
注:应用关闭后内存缓存会清空。
3.磁盘缓存
当在内存缓存也没找到key对应的资源后,则会去本地磁盘缓存目录查找key。有则把key/value复制到活动缓存,无则okhttp加载网络资源后保存到磁盘缓存并且复制到活动缓存。
三、生命周期
Glide在加载图片时会在当前界面新建一个透明的Fragment,监听Fragment生命周期通过接口回调。
四、图片缓存采用LRU算法
LRU算法实现原理为LinkedHaspMap,即双向链表+HashMap。










网友评论