天天看点

Android 缓存机制与实现

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

二级缓存工作机制

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

缓存流程原理图

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

Android 缓存机制与实现

1.UI:请求数据,使用唯一的Key值索引Memory Cache中的Bitmap.

2.内存缓存:缓存搜索,如果能找到Key值对应的Bitmap,则返回数据,否则执行第三步。

3.硬盘存储:使用唯一的Key值对应的文件名,检索SDCard上的文件。

4.如果有对应文件,使用BitmapFactory.decode()方法,解码Bitmap并返回数据,同时将数据写入缓存。如果没有对应的文件,执行第五步。

5.下载图片:启动异步线程,从数据源下载数据。

6.如下载成功,将数据同时写到硬盘和缓存,并将Bitmap显示在UI中。

缓存的实现

Android 缓存机制与实现