使用ImageLoader在调用displayImage,出现了oom。提示信息:
“Failed to allocate a 76 byte allocation with 0 free bytes and 0B until OOM”
解决:
1.初始化时在Appliction中设置ImageLoaderConfiguration,如下:
ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(getApplicationContext())
.threadPriority(Thread.NORM_PRIORITY - 4)
// .denyCacheImageMultipleSizesInMemory()
.discCacheFileNameGenerator(new Md5FileNameGenerator())
.tasksProcessingOrder(QueueProcessingType.FIFO)
.threadPoolSize(3)
.memoryCache(new WeakMemoryCache() )
.discCacheFileCount(60)
.build();
ImageLoader.getInstance().init(config);
2.加载图片时设置DisplayImageOptions,如下:
public static DisplayImageOptions HOME_PAGE_GRIDVIEW_IMAGE_OPTION = new DisplayImageOptions.Builder()
/* // 设置图片下载期间显示的图片
.showImageOnLoading(R.drawable.test_viewpagerimage)
// 设置图片Uri为空或是错误的时候显示的图片
.showImageForEmptyUri(R.drawable.test_viewpagerimage)
// 设置图片加载或解码过程中发生错误显示的图片
.showImageOnFail(R.drawable.test_viewpagerimage)
// 设置下载的图片是否缓存在内存中*/
.imageScaleType(ImageScaleType.IN_SAMPLE_INT)
.cacheInMemory(false)
// 设置下载的图片是否缓存在SD卡中
.cacheOnDisk(true)
.considerExifParams(true)
.bitmapConfig(Bitmap.Config.RGB_565)
.build();