图片的三级缓存
三级缓存
1, 一级缓存 内存缓存 访问快,效率高,可能导致内存溢出
从上往下,级别越来越低
强引用,只有没有任何引用的时候才会被虚拟机回收
软引用,当内存不足时,虚拟机会自动回收软引用引用的对象
弱引用,当对象创建完成后,虚拟机会不停的检测内存,当检测到弱引用,检测到就回收
虚引用,虚拟机随时回收
![](https://images2015.cnblogs.com/blog/1005355/201608/1005355-20160807214211559-630394679.jpg)
![](https://images2015.cnblogs.com/blog/1005355/201608/1005355-20160807214212543-1030403901.jpg)
在安卓3.0之后,这个不推荐 ,推荐使用lrucache
最近使用的原则
当内存不足时,回收不常使用或者最近没有使用的对象
2.二级缓存 ,本地缓存,缓存到安卓的文件里面去,访问稍快,节省流量
3.三级缓存,网络缓存
实现流程 :根据url找一张图片,具体怎么找:
1.从内存找图片,如果找到,就直接展示,如果找不到,就从本地找,
2.本地缓存找,找到就展示.找不到就开始访问网络
3.访问网络找图片
3.1 网络找到图片,缓存图片到本地和内存
3.2 展示图片
![](https://images2015.cnblogs.com/blog/1005355/201608/1005355-20160807214214512-2015094042.jpg)
1.从内存中获取图片
new lrucache
![](https://images2015.cnblogs.com/blog/1005355/201608/1005355-20160807214216965-926430412.jpg)
2.本地获取图片
![](https://images2015.cnblogs.com/blog/1005355/201608/1005355-20160807214219465-1482563831.jpg)
本地存储图片的方式
![](https://images2015.cnblogs.com/blog/1005355/201608/1005355-20160807214221528-499189825.jpg)
3.网络获取图片
![](https://images2015.cnblogs.com/blog/1005355/201608/1005355-20160807214225215-1037137423.jpg)