图片下载缓存防止OOM

时间:2022-08-07 15:27:30

一  ImageManager

ImageMemoryCache(内存缓存)、ImageFileCache(文件缓存)
    关于Java中对象的软引用(SoftReference),如果一个对象具有软引用,内存空间足够,垃 圾回收器就不会回收它;

    如果内存空间不足了,就会回收这些对象的内存。只要垃圾回收器没有回收它,该对象就可以被程序使用。软引用可用来

    实现内存敏感的高速缓存。使用软引用能防止内存泄露,增强程序的健壮性。

二  LruCache缓存 (android最新的版本中对软引用支持的并不是很好 )

LruCache设定的值,系统自动释放内存,这个类是3.1版本中提供的,如果你是在更早的Android版本中开发,则需要导入
android-support-v4的jar包

sd卡和内存空间都可缓存。

注意-----

线程池很好的帮我们管理并发和线程数量问题

/**
* 获取线程池的方法,因为涉及到并发的问题,我们加上同步锁
* @return
*/
public ExecutorService getThreadPool(){
if(mImageThreadPool == null){
synchronized(ExecutorService.class){
if(mImageThreadPool == null){
//为了下载图片更加的流畅,我们用了2个线程来下载图片
mImageThreadPool = Executors.newFixedThreadPool(2);
}
}
}

return mImageThreadPool;

}