时间不会停下来等你,我们现在过的每一天,都是余生中最年轻的一天。
首先,说一下为什么要实现图片的三级缓存
1:提高用户体验:,App进行页面展示的时候,如果在没有网络的情况下,图片可能展示过慢,甚至还会有图片加载失败的现象,影响用户体验
2:节约流量:当用户进入一个App的时候,App内部图片会进行页面显示,而这些图片如果每次进入页面都要进行网络请求显示的话,会大大增加用户流量的消耗
第二,什么是三级缓存呢
1:内存缓存 优先加载,速度最快
2:磁盘缓存 次于内存缓存加载,速度快
3:网络缓存 最后加载,速度较慢
缓存策略
为什么使用缓存策略
上面从用户角度考虑了为什么要使用图片缓存,此外,从开发人员角度看,Bitmap的创建非常消耗时间和内存,可能导致频繁GC,使用缓存策略能够高效加载Bitmap,减少卡顿,从而减少读取耗时和电量消耗。
缓存策略是什么
具体通过三级级缓存策略,内存作为一级缓存,本地作为二级缓存,网络直接下载为最后,其实严格来说不算缓存。其中内存采用LruCache,其内部通过LinkedhashMap来持有外界缓存对象的强引用;对于本地缓存,我这里为了简单快速理解原理,直接使用的是文件IO操作,而网上也有人采用DiskLruCache (不是Android官网提供,但被官网推荐)。加载图片时,首先采用LRU方式进行寻找,若找不到指定内容,则进行本地搜索,若本地也找不到,向网络发起请求来获取图片。