Android 缓存机制与实现

Android开发本质就是手机和互联网中的web服务器之间进行通信,就必然要从服务端获取数据,而反复通过网络获取数据比较耗时,特别是访问较多的时候,会极大的影响性能,Android中可通过二级缓存来减少频繁的网络操作,减少流量,提高性能。

二级缓存工作机制
当Android端获得数据时比如获取网络中的图片,我们首先从内存中查找(按键Key查找),内存中没有的再从磁盘文件或者数据库中去查找,若磁盘中也没有才通过网络获取。当获得来自网上的数据,就以Key-value对的方式线缓存到内存中(一级缓存),同时也缓存到磁盘文件或者数据库中(二级缓存)。注意,内存缓存会造成堆内存泄漏,所以一级缓存通常要严格要求控制缓存的大小,一半控制在系统内存的1/4.

缓存流程原理图
主体有三个,分别是UI,缓存模块和数据源(网络)。它们之间的关系如下:

这里写图片描述

1.UI:请求数据,使用唯一的Key值索引Memory Cache中的Bitmap.
2.内存缓存:缓存搜索,如果能找到Key值对应的Bitmap,则返回数据,否则执行第三步。
3.硬盘存储:使用唯一的Key值对应的文件名,检索SDCard上的文件。
4.如果有对应文件,使用BitmapFactory.decode()方法,解码Bitmap并返回数据,同时将数据写入缓存。如果没有对应的文件,执行第五步。
5.下载图片:启动异步线程,从数据源下载数据。
6.如下载成功,将数据同时写到硬盘和缓存,并将Bitmap显示在UI中。

缓存的实现
这里写图片描述

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值