Android之com.nostra13.universalimageloader加载图片抛出OutOfMemroyError错误的多种解决办法
2024-10-14 03:51:48
com.nostra13.universalimageloader是用来加载图片非常好的框架,但是也有问题,一旦图片过多的话,很容易就会提示OutOfMemroyError错误,也就是内存溢出的问题,在这里有几种解决办法,可以参考下。
一、减少图片占用的内存
对DisplayImageOptions类使用如下的配置。
new DisplayImageOptions.Builder()
.cacheInMemory(false) //设置图片不缓存于内存中
.cacheOnDisc(true)
.bitmapConfig(Bitmap.Config.RGB_565) //设置图片的质量
.imageScaleType(ImageScaleType.IN_SAMPLE_INT) //设置图片的缩放类型,该方法可以有效减少内存的占用
.build();
二、清除ImageLoader的缓存
1、清除指定图片缓存:
DiskCacheUtils.removeFromCache(url, ImageLoader.getInstance().getDiskCache());//清除SD卡 MemoryCacheUtils.removeFromCache(url, ImageLoader.getInstance().getMemoryCache());//清除内存
2、清除ImageLoader全部缓存:
ImageLoader.getInstance().clearMemoryCache();//清除内存
ImageLoader.getInstance().clearDiskCache();//清除SD卡
三、就是对于抛出的错误做出特定的处理,解决溢出的问题
对图片加载方法添加监听事件,对出现的异常进行特定的处理,其中FailReason为该库中的异常类该类封装了枚举变量FailType,根据不同的异常,可以做出相应的处理和操作。
imageLoader.loadImage(uri, options, new ImageLoadingListener() { @Override
public void onLoadingStarted(String imageUri, View view) {
// TODO Auto-generated method stub } @Override
public void onLoadingFailed(String imageUri, View view, FailReason failReason) {
// TODO Auto-generated method stub
switch (failReason.getType()) {
case IO_ERROR:
//handler.sendEmptyMessage();
break;
case DECODING_ERROR:
break; case NETWORK_DENIED:
break; case OUT_OF_MEMORY://内存溢出
break; case UNKNOWN:
break;
default:
break;
}
} @Override
public void onLoadingComplete(String imageUri, View view, Bitmap loadedImage) {
// TODO Auto-generated method stub } @Override
public void onLoadingCancelled(String imageUri, View view) {
// TODO Auto-generated method stub }
});
在使用ImageLoader或者其他框架加载图片时都应该对内存溢出有所处理,毕竟现在的APP内容也越来越丰富,从而导致APP越来越大,处理好缓存,也可以给用户更好的体验。
最新文章
- 代码的坏味道(19)——狎昵关系(Inappropriate Intimacy)
- jquery.zclip轻量级复制失效问题
- CoreData数据库浅析
- CSS特异性(CSS Specificity)的细节之CSS样式权重的计算与理解(CSS样式覆盖规则)
- 在Altium_Designer_PCB_中插入图片的方法
- IOS添加手势识别
- 送给和我一样曾经浮躁过的PHP程序猿
- c# 各种排序算法+找第二大的数+句子单词反转
- C++中的const关键字的用法
- TC Asia Competition
- 李洪强漫谈iOS开发[C语言-034]-程序的结构
- Android 安卓实现页面相互跳转并相互传递参数
- JavaSE教程-04Java中循环语句for,while,do···while-练习2
- 线上Java程序导致服务器CPU占用率过高的问题排除过程
- Spring Boot + Jersey发生FileNotFoundException (No such file or directory)
- noi2018还没想好记
- Linux下编译器的安装
- webpack学习笔记--压缩代码
- 《Head First设计模式》批注系列(一)——观察者设计模式
- Linux之添加交换分区