android中利用LruCache对图片进行缓存处理

为什么选择LruCache做图片缓存?而不是 软引用或弱引用
  1:因为LruCache当缓存的图片达到了预先设定的值的时候,那么近期使用次数最少的图片就会被回收掉(这个值可以由我们来设置)
   2:因为从 Android 2.3 (API Level 9)开始,垃圾回收器会更倾向于回收持有软引用或弱引用的对象

LruCache的使用
  首先来看LruCache的构造:new LruCache<String, Bitmap>
 可以看出是由一个键值对组成其中键为String类型值为bitmap所以当我们使用的时候则可以将键作为图片的url值则传入bitmap
</pre><pre class="java" name="code"><span style="font-size:14px;font-family:NSimSun;line-height:2;color:#000000;">int MAXMEMONRY = (int) (Runtime.getRuntime()</span><span style="font-size:14px;font-family:NSimSun;line-height:2;color:#000000;"> .maxMemory() / 1024);</span>//获取手机的内存大小
LruCache<String, Bitmap> mMemoryCache = new LruCache<String, Bitmap>(
                    MAXMEMONRY / 8) {//这里为手机内存大小/8
                @Override
                protected int sizeOf(String key, Bitmap bitmap) {
                     // 重写此方法来衡量每张图片的大小,默认返回图片数量。
                     return bitmap.getRowBytes() * bitmap.getHeight() / 1024;
                }
                @Override
                 protected void entryRemoved(boolean evicted, String key,
                         Bitmap oldValue, Bitmap newValue) {
                                  // evicted:true---为释放空间被删除;false---put或remove导致
                                   Log.v("tag", "hard cache is full , push to soft cache");
                 }
             };
清空缓存:public void clearCache(){
	if(mMemoryCache!=null){
              if(mMemoryCache.size()>0){
                    mMemoryCache.evictAll();
	      }
              mMemoryCache=null;
        }
}
添加图片到缓存:public void addbitmaptocache(String key,Bitmap bitmap){
                   if(mMemoryCache.get(key==null)){
                       mMemoryCache.put(key,bitmap);
                   }
            }
从缓存中取得图片:mMemoryCache.get(key);
从缓存中移除对应key的缓存: public void removeImageCache(String key){
                               if(mMemoryCache!=null){
                                         Bitmap bm=mMemoryCache.remove(key);
                                         if(bm!=null){
                                                bm.recycle();
                                          }
                               }
                        }
我们也可以利用trimToSize(int maxSize)用来清空cache 空间其中maxsize为预先设定的值也就是我们上面传入的
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值