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()方法,这个方法在数据存入缓存时调用,计算出存入的数据的大小,这里存入的是图片,所以这个方法应该返回的是图片的大小。