最近在写程序的时候图片加载老是报出内存溢出的错误,表示很是头痛。网上找了些文章看了看。今天就大致的总结下。可以先去看下这篇文章 http://www.2cto.com/kf/201208/148379.html 很是详细。
大致就用到了java 软引用的概念,图片处理,java回收机制三种方法合力解决了OOM的问题。随然知道了方法但在调试的时候还是费了不少时间。
我加载图片的代码大多数都是在自定义的适配器中,所以我选择把内存处理的方法写在运用适配器的activity中,首先先去加载图片代码如下:
private Bitmap loadBitmapImage(String path) {
if (mImageCache.containsKey(path)) {
SoftReference<Bitmap> softReference = mImageCache.get(path);
Bitmap bitmap = softReference.get();
if (null != bitmap)
return bitmap;
}
Bitmap bitmap = Options.CreatBitMap(path);
mImageCache.put(path, new SoftReference<Bitmap>(bitmap));
return bitmap;
}
可以看出在每次加载图片的时候都会将图片存入一个软引用的缓存数组中,这样做的好处就是,每当你重复调用的时候都会先去这个数组中判断是否有该图片的存在,如果存在就不用去重新读取了,重新引用就好.
然后就是图片释放的问题,首先你要考虑清楚的问题是,图片在什么时候释放,如果方法写错了地方也是不对的这里我写在了onDestroy()方法中
public void releaseImage(String path) {
if (mImageCache.containsKey(path)) {
SoftReference<Bitmap> reference = mImageCache.get(path);
Bitmap bitmap = reference.get();
if (null != bitmap) {
bitmap.recycle();
}
mImageCache.remove(path);
}
}
如果你有更好的经验,请分享
分享到:
相关推荐
安卓在加载大图的时候经常会出现oom的错误,给大家分享我的一些处理经验。 这个是优化后的版本。
详情请参照 http://blog.csdn.net/gdp2852/article/details/7027162
安卓在加载大图的时候经常会出现oom的错误,给大家分享我的一些处理经验。这个版本关闭了硬件加速。
ANDROIDBITMAP内存限制OOM,OUTOFMEMORY.pdf
安卓在加载大图的时候经常会出现oom的错误,给大家分享我的一些处理经验。这是2.0版本。解决上个版本再次使用recycle bitmap的bug。
android bitmap outofMemory 用来解决android中常见的bitmap outOfMemory
Android 内存 OOM 优化和治理,Android 内存泄漏原因详解与应对措施,Android 中的 Bitmap 使用详解,Android 中的 Bitmap 内存治理和优化详解,Android 内存分析命令详解,Java内存模型。Android 内存 OOM 优化和...
处理bitmap内存溢出问题
android Bitmap相关知识介绍~~~
Android bitmap Android Bitmap相关
Android不支持将Bitmap转换成单色的Bmp图片,所以参考Bmp格式说明,自己写了一个转换类。亲测有效!!!
ANDROIDBITMAP内存限制OOM,OUTOFMEMORY[文].pdf
android中对Bitmap图片设置任意角为圆角
Android Bitmap.getPixels的正确理解演示源码,参考文章《Android Bitmap入门:getPixels的正确理解》
Android上解析24位深度Bitmap文件示例
Android图片Bitmap和字符串String之间相互转换的工具类,外加项目代码,封装好的,直接可以用,
Android中压缩bitmap的工具类,用于压缩bitmap图片用,适用于图片体积过大而同时显示等对图片质量要求不大的场景
这个 Demo 给出了 Android 上处理图片的通用方法,包括图片缓存,加载大图片的方法等。
android bitmap通过byte数组以流的形式创建,自己加了进度条,看起来稍微好点
主要介绍了Android 实现把bitmap图片的某一部分的颜色改成其他颜色,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧