ImageView里setImageResource出现OOM问题
来源:互联网 发布:linux编辑文件命令 编辑:程序博客网 时间:2024/05/23 01:59
ImageView加载图片时,有时会出现OOM问题
imageView.setImageResource(imageId);
public static Bitmap readBitMap(Context context, int resId) {
BitmapFactory.Options opt = new BitmapFactory.Options();
opt.inPreferredConfig = Bitmap.Config.RGB_565;
opt.inPurgeable = true;
opt.inInputShareable = true;
// 获取资源图片
InputStream is = context.getResources().openRawResource(resId);
return BitmapFactory.decodeStream(is, null, opt);
}
Bitmap bitmap=readBitMap(LoginActivity.this,imageId);
imageView.setImageBitmap(bitmap);
那是为什么,会导致oom呢:
原来当使用像 imageView.setBackgroundResource,imageView.setImageResource, 或者 BitmapFactory.decodeResource 这样的方法来设置一张大图片的时候,这些函数在完成decode后,最终都是通过java层的createBitmap来完成的,需要消耗更多内存。
因此,改用先通过BitmapFactory.decodeStream方法,创建出一个bitmap,再将其设为ImageView的 source,decodeStream最大的秘密在于其直接调用JNI>>nativeDecodeAsset()来完成decode,无需再使用java层的createBitmap,从而节省了java层的空间。如果在读取时加上图片的Config参数,可以跟有效减少加载的内存,从而跟有效阻止抛out of Memory异常。
另外,需要特别注意:
decodeStream是直接读取图片资料的字节码了, 不会根据机器的各种分辨率来自动适应,使用了decodeStream之后,需要在hdpi和mdpi,ldpi中配置相应的图片资源,否则在不同分辨率机器上都是同样大小(像素点数量),显示出来的大小就不对了。
- ImageView里setImageResource出现OOM问题
- setBackgroundResource setImageResource等oom问题
- 关于ImageView加载出现OOM问题
- android ImageView 赋值问题setImageResource和setImageBitmap
- android中setImageResource加载大图片出现oom解决方案
- android中setImageResource加载大图片出现oom解决方案
- Android中setImageResource加载大图片出现oom解决方案
- android中setImageResource加载大图片出现oom解决方案
- android中setImageResource加载大图片出现oom解决方案
- android中setImageResource加载大图片出现oom解决方案
- imageview.setImageResource()不显示
- ImageView的setBackgroundResource与setImageResource区别
- imageView的ScaleType缩放和setImageResource方法
- ImageView setImageResource 无效,记一个bug
- Android 中Bitmap 在ImageView中OOM问题
- 解决setBackgroundResource出现oom的问题
- ubuntu 服务器clone,出现OOM问题
- 解决setBackgroundResource出现oom的问题
- App架构经验总结
- 学习java需要的是耐心!
- 程序人生
- 搭建IIS7.0网站的经历
- socket学习(多线程聊天示例)
- ImageView里setImageResource出现OOM问题
- struts文件上传
- kaka-manager和kafka-offset-monitor的安装和使用
- php解决约瑟夫问题
- smarty模板引擎_3-预保留变量
- jquery 延迟触发控制 $.holdReady
- 文件存储
- Java已经开始影响这一代程序员
- zmap源码编译安装流程及错误解决方案