您的当前位置:首页Android软引用

Android软引用

2022-08-20 来源:小侦探旅游网
Android图片加载软引用

软引用主要是为了解决手机在加载图片的时候能够更加快速便捷,因为手机系统内存有限,所以当使用过大时会导致内存不够用或者内存溢出也有可能,那么我们就可以使用Android软引用解决该问题,他的原理很简单,在足够内存的情况下尽量多的加载图片到内存,当内存不多时每加载一张图片就回收gc一张图片资源,但是在gc之前先把该图片资源保存到sd卡里面方面下次取出。

首先我们先创建一个map集合用来装软引用对象。 Map> imacache= new HashMap>(); 在定义一个方法将Bitmap的软引用保存到HashMap Public void addImgtocache(String path){ / /// 强引用的Bitmap对象

Bitmap bp=BitmapFactory.decodeFile(path); // 软引用的Bitmap对象

SoftReference sr=

new SoftReference(bp);

// 添加该对象到Map中使其缓存 Imacache.put(path,sr); }

//在获取资源的时候可以使用SoftReference的get方法得到

资源。

Public Bitmap getImg(String path){ //在缓存里面拿

SoftReference tempdata=

Imacache.get(path);

If(tempdata==null){ Return null; }

Bitmap temp_bp=SoftReference.get(); Return temp_bp; }

使用软引用以后,在OutOfMemory异常发生之前,这些缓存的图片资源的内存空间可以被释放掉的,从而避免内存达到上限,避免Crash发生。

需要注意的是,在垃圾回收器对这个Java对象回收前,SoftReference类所提供的get方法会返回Java对象的强引用,一旦垃圾线程回收该Java对象之后,get方法将返回null。所以在获取软引用对象的代码中,一定要判断是否为null,以免出现NullPointerException异常导致应用崩溃

一般我们使用这个的话都会对其进行封装:

因篇幅问题不能全部显示,请点此查看更多更全内容