LruCache应用及原理

转载出处:https://www.cnblogs.com/huhx/p/useLruCache.html

在你应用程序的UI界面加载一张图片是一件很简单的事情,但是当你需要在界面上加载一大堆图片的时候,情况就变得复杂起来。Android为我们提供了LruCache,今天我们就来学习这个缓存的知识以及原理。

 

目录导航

  1.   LruCache缓存的实例代码
  2.   LruCache缓存的原理分析
  3.   友情链接

 

LruCache缓存的实例代码

一、 我们建立一个简单的项目去体会LruCache的使用过程

通过http请求网络上的图片文件,然后保存在缓存中。显示图片时,先从缓存中取,如果没有,就发送请求向服务器取。项目结构如下:

 

二、 在AndroidManifest.xml文件中,加入网络权限的声明:

 

三、 创建一个图片加载的类,用于对缓存的一些操作,重写LruCache的sizeOf方法:

复制代码
 
复制代码

 

四、 在MainActivity中使用并测试LruCache:showBitmap方法是先从缓存中取,如果没有就发送http请求取得。

复制代码
复制代码

 

五、 BitmapThread的线程:从服务器拿到Bitmap对象,并加入到缓存中。

复制代码
复制代码

 

六、 handler处理消息,并显示图片:

复制代码
复制代码

 

七、 从缓存中删除图片:

 

八、 输出日志结果如下:

第一次点击showBitmap:

第二次点击showBitmap:

点击remove之后,再点击showBitmap:

 

LruCache缓存的原理分析

通过上述的案例,我们已经知道了LruCache的使用方法。接下来,我们一步步的分析它的过程以及原理。

一、 LruCache的文档描述如下:

 

二、 它的属性一方法说明如下:

复制代码
复制代码

文档上一些对LruCache方法的描述:

  

 

三、 LruCache只有一个构造方法,LruCache(int maxSize)代码如下:初始化一个LinkedHashMap

复制代码
复制代码

 

四、 LruCache的put方法是把内容放入到缓存中去,代码如下:

复制代码
复制代码
其中safeSizeOf方法,是计算LruCache的已经缓存的大小,以下的sizeOf(默认返回1)方法是我们要重写的。
复制代码
复制代码

我们要重写sizeOf方法:

 

五、 LruCache的get方法是从缓存中去取得内容,代码如下:

复制代码
     
复制代码

 

六、 LruCache的remove方法是从缓存中去删除内容,并更新已经缓存的大小,代码如下:

复制代码
请使用浏览器的分享功能分享到微信等