Android 缓存机制与实现
2016-01-18 18:38
363 查看
Android开发本质就是手机和互联网中的web服务器之间进行通信,就必然要从服务端获取数据,而反复通过网络获取数据比较耗时,特别是访问较多的时候,会极大的影响性能,Android中可通过二级缓存来减少频繁的网络操作,减少流量,提高性能。
二级缓存工作机制
当Android端获得数据时比如获取网络中的图片,我们首先从内存中查找(按键Key查找),内存中没有的再从磁盘文件或者数据库中去查找,若磁盘中也没有才通过网络获取。当获得来自网上的数据,就以Key-value对的方式线缓存到内存中(一级缓存),同时也缓存到磁盘文件或者数据库中(二级缓存)。注意,内存缓存会造成堆内存泄漏,所以一级缓存通常要严格要求控制缓存的大小,一半控制在系统内存的1/4.
缓存流程原理图
主体有三个,分别是UI,缓存模块和数据源(网络)。它们之间的关系如下:
![](https://img-blog.csdn.net/20160118151957245)
1.UI:请求数据,使用唯一的Key值索引Memory Cache中的Bitmap.
2.内存缓存:缓存搜索,如果能找到Key值对应的Bitmap,则返回数据,否则执行第三步。
3.硬盘存储:使用唯一的Key值对应的文件名,检索SDCard上的文件。
4.如果有对应文件,使用BitmapFactory.decode()方法,解码Bitmap并返回数据,同时将数据写入缓存。如果没有对应的文件,执行第五步。
5.下载图片:启动异步线程,从数据源下载数据。
6.如下载成功,将数据同时写到硬盘和缓存,并将Bitmap显示在UI中。
缓存的实现
二级缓存工作机制
当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中。
缓存的实现
相关文章推荐
- 使用C++实现JNI接口需要注意的事项
- Android IPC进程间通讯机制
- Android Manifest 用法
- [转载]Activity中ConfigChanges属性的用法
- Android之获取手机上的图片和视频缩略图thumbnails
- Android之使用Http协议实现文件上传功能
- Android学习笔记(二九):嵌入浏览器
- android string.xml文件中的整型和string型代替
- i-jetty环境搭配与编译
- android之定时器AlarmManager
- android wifi 无线调试
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- android 代码实现控件之间的间距
- android FragmentPagerAdapter的“标准”配置
- Android"解决"onTouch和onClick的冲突问题
- android:installLocation简析
- android searchView的关闭事件
- SourceProvider.getJniDirectories