转载出处:https://www.cnblogs.com/huhx/p/useLruCache.html
在你应用程序的UI界面加载一张图片是一件很简单的事情,但是当你需要在界面上加载一大堆图片的时候,情况就变得复杂起来。Android为我们提供了LruCache,今天我们就来学习这个缓存的知识以及原理。
目录导航
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方法是从缓存中去取得内容,代码如下:
