您的位置:首页 > 移动开发 > Android开发

王学岗Android的三级缓存(待续)

2016-06-28 18:01 363 查看
什么是三级缓存:加载网络上的图片的时候从哪个地方加载

一级:内存

二级:磁盘(文件,数据库)

三级:网络

app需要从网络加载一张图片:

1,首先从内存中读取,如果有就显示,(提高io效率)

2,没有则从二级缓存磁盘读取(节省资源—内存 cpu 流量)

读取了就立即缓存到内存中

3, 磁盘中也没有这张图片,就去网络加载

获取图片首先缓存到磁盘

然后缓存到我们的内存

三级缓存技术的关键是内从中不常用的图片如何回收,

第一:可以使用软引用,但是在Android2.3之后系统多选择回收软引用;所以这个技术不推荐使用!

第二:LruCache-(least recent used)技术,这是谷歌推荐的,翻译成汉语就是最近最少使用的;先回收最不常用的对象!

网上有些成熟的框架可以使用,如Facebook的frefco,universal-Image-loader.jar(一次全部搞定 网络 内存缓存 磁盘缓存) ,Xutil.jar!

在本文中我们使用volley——网络请求框架((常见的网络请求框架有okhttp nohttp volley )

下面我们介绍下volley框架:

(1)Volley框架非常的灵活,要自己做图片的缓存。

(2)有缓存功能,有时候要配合服务器的响应头来缓存

内部的缓存机制:过期时间,新鲜度:

问题:在系统存储里面。用户系统存储经常不够用。

(3)Volley向外提供了接口,允许开发自己实现缓存。

Volley封装缓存框架

1),网络层 volley处理(有请求队列排队的优化)—会有预留的接口回调:判断当前是否有缓存。

2),内存: LruCache算法硬缓存到内存(不用软引用) android中自带了LruCache类

3),磁盘: LruCache算法缓存到磁盘。谷歌推出了磁盘缓存:DiskLruCache
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  缓存 内存 网络 android