Android图片的三级缓存
来源:互联网 发布:郑州自学考试网络报名 编辑:程序博客网 时间:2024/05/16 18:10
移动应用中,我们一般将网络图片分为三个级别,第一级别是网络层,即根据图片的url地址可以找到服务器上相应图片,获取这一层的图片会消耗流量,所以我们希望可以获取后本地就永久使用,所以就会有接下来的缓存策略;第二层缓存是在手机内存层,是将第一层的图片下载到手机内存,这种缓存读取速度非常快,但当图片内存被回收时,图片自然就不会存在了,第三层则是在手机硬盘层,是会缓存到sd卡。但这一层相对于内存的读取速度会慢很多,所以,很好的协调这三层图片缓存就可以提升应用性能和用户体验。
秉着不重复造轮子原则,这里我采用Volley+LruCache+DiskLruCache三个谷歌官方认可的库来实现网络图片三级缓存。并且以“one line”风格来实现将网络图片显示在ImageView上,而无需关心任何缓存细节。
类库下载
- Volley是Goole在2013年Google I/O大会上推出了一个新的网络通信框架,它是开源的,你可以通过git来clone源码并倒入项目:
这个地址可能会被和谐,所以你可以在这里下载完整的jar包:
2.LruCache这个类是Android3.1版本中提供的,如果你是在更早的Android版本中开发,则需要导入android-support-v4的jar包。
3.DiskLruCache是非Google官方编写,但获得官方认证的硬盘缓存类,该类没有限定在Android内,所以理论上java应用也可以使用DiskLreCache来缓存。该类你可以在这个下载:http://cdn.saymagic.cn/150131132428.java
方法与流程
1.要想实现图片三级缓存,就需要将图片下载到本地,我们所有网络图片请求都是通过Volley来统一管理的,Volley需要我们声明一个RequesQueuetManager来维持请求队列,因此,我们首先定义RequesQueuetManager
类来管理RequesQueuetManager,代码如下:
public class RequesQueuetManager {public static RequestQueue mRequestQueue = Volley.newRequestQueue(DemoApplication.getInstance());public static void addRequest(Request<?> request, Object object){if (object != null){request.setTag(object);}mRequestQueue.add(request);}public static void cancelAll(Object tag) {mRequestQueue.cancelAll(tag);}}
因为RequestQueue需要一个Context类型参数,所以我们在
Volley.newRequestQueue(DemoApplication.getInstance())
这句里传入了DemoApplication.getInstance()
,这个静态方法是什么呢?就是应用的application实例,我们自定义一个application,然后将这个application传入给RequestQueue,我们自定义的application如下:publicclassDemoApplicationextendsApplication{
publicstaticString TAG;
privatestaticDemoApplication application;
publicstaticDemoApplication getInstance(){
return application;
}
@Override
publicvoid onCreate(){
super.onCreate();
TAG =this.getClass().getSimpleName();
application =this;
}
}
- Android图片的三级缓存
- android 图片的三级缓存
- android图片的三级缓存
- Android 图片的三级缓存
- Android图片的三级缓存
- Android 图片的三级缓存
- Android 图片的三级缓存 .
- Android 图片的三级缓存
- Android 图片的三级缓存
- Android的图片缓存 三级缓存
- Android 图片三级缓存
- Android 图片三级缓存
- Android 图片三级缓存
- android图片三级缓存
- Android三级图片缓存
- Android图片三级缓存
- android图片三级缓存
- android图片三级缓存
- Js闭包的用途
- DATABASE 12C 新功能rman RECOVER TABLE
- Linux网络套接字学习笔记(一)
- iOS开发之LLDB断点调试和常用命令
- Google Protocol Buffer 的使用和原理
- Android图片的三级缓存
- BeanUtils.copyProperties() 用法
- Axure安装及汉化、注册
- Unity Shader 学习笔记(十一) 混合纹理Shader实例
- LINUX 部署 WEB.PY 验证码服务的 配置说明书
- linux mysql大小写敏感问题
- android系统调用百度DistanceUtil.getDistance()死机
- android学习之ChartEngine详细
- Caffe傻瓜系列(1):数据层及参数