【Android开发新手的学习笔记】使用LruCache对ListView进行优化
来源:互联网 发布:linux系统主要用途 编辑:程序博客网 时间:2024/06/04 18:38
Lru算法即近期最少使用算法。
Android提供LruCache类来实现这个缓存算法,在内存空间足够的情况下将内容存储到内存中,当内存空间不足时,将近期最少使用的空间腾出,用来存储其它内容。
LruCahce本质上是一个HashMap,所以能够使用一些HashMap类的方法。
我的理解是,在浏览ListView时,将需要缓存的数据存到LruCache这个HashMap中,在需要用到的时候,在LruCache这个HashMap中取出来。只不过LruCache这个HashMap还带有近期最少使用算法这个功能。
在上一篇文章里,用异步加载的方式实现了一个图文混排的ListView,如果不将获取到的图片缓存下来,那使用的过程将会消耗很多流量去重复获取数据,所以现在使用LruCache类将数据缓存下来。
使用LruCache类,在new一个LruCache时,要指定LruCache的缓存大小Maxsize。可以先用Runtime类的getRuntime().getMaxMemory();方法来获取当前可用的空间,然后再指定缓存空间大小,这里的MaxSize=MaxMeory/4;
同时,还要重写sizeOf()方法,这个方法在数据存入缓存时调用,计算出存入的数据的大小,这里存入的是图片,所以这个方法应该返回的是图片的大小。
int MaxMemory = (int) Runtime.getRuntime().maxMemory();int MaxSize=MaxMemory/4;mCache=new LruCache<String,Bitmap>(MaxSize){ @Override protected int sizeOf(String key, Bitmap value) { return value.getByteCount(); }};
然后在获取图片之前,先判断是否在缓存中已经存在。如果存在,则直接取出,更新UI。如果不存在,则获取图片,然后存入缓存,再更新UI。
最后,除了可以将图片存在上述的内存缓存中,还可以将图片存到本地的硬盘空间中。上述的内存缓存称为一级缓存,存到本地硬盘控件的缓存称为二级缓存。
- 【Android开发新手的学习笔记】使用LruCache对ListView进行优化
- android使用LruCache对listview加载图片时候优化处理
- android使用lrucache与softReference对图片进行优化
- android使用lrucache与softReference对图片进行优化
- android使用ViewHolder对ListView进行优化
- Android开发笔记----listview的使用
- android性能优化学习笔记-listview优化
- Android之ListView优化(使用Lrucache,图片滑动时使用默认图片,停止时加载)
- Android之ListView优化(使用Lrucache,图片滑动时使用默认图片,停止时加载)
- Android之ListView优化(使用Lrucache,图片滑动时使用默认图片,停止时加载)
- Android之ListView优化(使用Lrucache,图片滑动时使用默认图片,停止时加载)
- 某宅的Android学习笔记(一)——ListView的使用与优化
- Android学习笔记06:ListView的使用
- 【Android学习笔记】ListView的使用
- Android学习笔记--7.listView的使用
- android开发笔记之ListView的优化+分类显示
- [Android新手学习笔记23]-如何使用ListView展示列表数据
- 【Android开发新手的学习笔记】异步加载知识梳理
- JavaSE入门学习15:Java面向对象之继承
- Android Studio bug:Error:Could not run build action using Gradle distribution 'https://services.grad
- 【免翻墙】搭建Android开发环境
- vijos P1320 清点人数 题解
- 今天在做HDU1495的时候看到了一个代码
- 【Android开发新手的学习笔记】使用LruCache对ListView进行优化
- Oracle经典教程(推荐)
- OpenCL入门
- struts2——HelloWorld
- TableView2
- Android Scroller完全解析,关于Scroller你所需知道的一切
- MongoDB
- JsViews Error:Unknown template:“#projectData”
- eclipse中JS文件乱码