Android 开发学习笔记(一) LRU算法的使用
- 关于LRU的定义:
L
RU是Least Recently Used 近期最少使用算法。是一种置换算法,
百度百科是这么介绍的:内存管理的一种页面置换算法,对于在内存中但又不用的数据块(内存块)叫做LRU,操作系统会根据哪些数据属于LRU而将其移出内存而腾出空间来加载另外的数据。
- 在Android中的应用:Android提供了LruCache 类来 实现Android缓存的lru算法;
- 在Android中显示单个图片,加载单个网络图片是比较简单的,而多个图片同时加载时,就会变的比较复杂,比如ListView,GridView等控件,一般处理的方式有多线程加载(使用Thead + handle)的方式,还有异步加载(AsyncTask)。要提高体验度可以使用Lru算法,做缓存的处理。
- 使用方法;
- 翻看源码可以看出 LruCache类是使用的 LinkedHashMap<K, V> map;来实现缓存的,所以存取的用法基本与map类似;
private LruCache<String ,Bitmap> caches; //初始化 LruCache public void init LruCache(){ //获取运行时的内存, int maxMemory = (int) Runtime.getRuntime().maxMemory(); //取 内存的1/4 作为缓存的大小; int cacheSize = maxMemory / 4; caches = new LruCache<String, Bitmap>(cacheSize){ @Override protected int sizeOf(String key, Bitmap value) { return value.getByteCount(); } }; } //存 public void addBitmap(String url,Bitmap bitmap){ if(caches.get(url) == null){ caches.put(url,bitmap); } } //取 public Bitmap getBitmap(String url){ return caches.get(url); }