Android开发中 页面加载一张超大图片时出现OOM
来源:互联网 发布:linux 命令结果 编辑:程序博客网 时间:2024/05/16 11:33
/** * 以最省内存的方式读取本地资源的图片 * @param context *@param resId * @return */ 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之后,再 detailView.setImageBitmap(pdfImage); 就ok了!
那是为什么,会导致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异常。
- Android开发中 页面加载一张超大图片时出现OOM
- Android开发中 页面加载超大图片时出现OOM
- android加载大图片时oom问题处理
- Android开发中 页面加载一张超大图片(561kb)时出现OOM
- Android开发中 页面加载一张超大图片(561kb)时出现OOM
- Android开发中 页面加载一张超大图片(561kb)时出现OOM
- Android开发中 页面加载一张超大图片 时出现OOM
- Android开发中 页面加载一张超大图片(561kb)时出现OOM
- android 加载大图片时报OOM的解决方案(源码)
- android 加载大图片时报OOM的解决方案(源码)
- android 加载大图片时报OOM的解决方案(源码)
- android 加载大图片时报OOM的解决方案
- Android 加载大图片时报OOM的解决方案(源码)
- 加载大图片时,出现的OOM异常,以及处理OOM异常的方法
- android中setImageResource加载大图片出现oom解决方案
- android中setImageResource加载大图片出现oom解决方案
- Android中setImageResource加载大图片出现oom解决方案
- android中setImageResource加载大图片出现oom解决方案
- FrameBuffer 之 fb_fix_screeninfo 、fb_var_screeninfo
- 动态加载js
- /dev/tty
- (整理)eclipse3.7插件地址
- 孩子,你养得起吗?
- Android开发中 页面加载一张超大图片时出现OOM
- linux 语言与vim颜色配置
- java的内存垃圾回收机制
- 三星i9100 Galaxy S2 官方原版rom大集合(国行、欧版、港版)
- Ubuntu上安装中文输入法fcitx
- Qt+opengl集成,运行demo时出现的问题
- Windows 7系统如何设置计划任务?
- python编程
- COMS电路的使用注意事项