Xamarin.Android OOM 思路整理 (BitmapFactory.DecodeByteArray)
来源:互联网 发布:六级仔细阅读技巧知乎 编辑:程序博客网 时间:2024/05/16 07:09
起因:之前在工程中整合Android-Universal-Image-Loader框架,运行的时候确老是抛OOM异常,怀疑是UIL框架OOM问题,搞了一个星期,还是百思不得其解
思路:测试UIL框架,发现几十M的图和几K的图片没有任何区别,程序照旧会崩掉
初步排除UIL框架OOM异常问题
还有什么地方用到了图片方式呢?
发现程序代码用到了Bitmap的解码 BitmapFactory.DecodeByteArray方法,上网查证后注释代码程序运行OK无OOM异常抛出
问题找到了
BitmapFactory.DecodeByteArray过度消耗系统内存,导致OOM问题抛出 此方法有毒
解决核心思路:图片,我们只加载适合的、需要的尺寸!!利用BitmapFactory.Options可完成这一项任务
解决方案:
/// <summary> /// Byte to Bitmap /// </summary> /// <param name="imgByte"></param> /// <returns></returns> public static Bitmap byteToBitmap(byte[] imgByte) { System.IO.Stream input = null; Bitmap bitmap = null; BitmapFactory.Options options = new BitmapFactory.Options(); options.InSampleSize = 8; input = new MemoryStream(imgByte); SoftReference softRef = new SoftReference(BitmapFactory.DecodeStream( input, null, options)); bitmap = (Bitmap)softRef.Get(); if (imgByte != null) { imgByte = null; } try { if (input != null) { input.Close(); } } catch (IOException e) { e.PrintStackTrace(); } return bitmap; }
关于Bitmap,个人觉得这里有两篇文章还不错,可以借鉴一下:
http://www.jianshu.com/p/f75ef4e24c01
http://www.jianshu.com/p/a7d9562405ef
0 0
- Xamarin.Android OOM 思路整理 (BitmapFactory.DecodeByteArray)
- android BitmapFactory.decodeByteArray()=null
- android中BitmapFactory.decodeByteArray的用法
- android获取网络图片的用法 BitmapFactory.decodeByteArray
- android获取网络图片的用法 BitmapFactory.decodeByteArray 返回null
- 通过BitmapFactory.decodeByteArray把byte[]转成Bitmap出现的OOM的解决方法
- 通过BitmapFactory.decodeByteArray把byte[]转成Bitmap出现的OOM的解决方法
- Android-BitmapFactory.decodeResource OOM问题
- android BitmapFactory需慎用,可能造成oom
- BitmapFactor.decodeByteArray方法导致OOM
- Android OOM解决思路
- BitmapFactory.decodeByteArray() 返回null,分析与解决
- 调用 BitmapFactory.decodeByteArray 函数返回 null 值
- 关于android OOM整理
- Android OOM 问题整理
- android decodeByteArray outofmemoryerror
- 使用BitmapFactory压缩图片大小解决android解析图片OOM错误
- android之BitmapFactory.Options的使用,避免oom
- 【连载】关系型数据库是如何工作的?(12) - 查询管理器之Statistics
- AVL树的创建与旋转
- C语言与C++语言的常用输出格式控制
- cPanel下如何修改文件权限
- 【HUSTOJ】1092: 马鞍数
- Xamarin.Android OOM 思路整理 (BitmapFactory.DecodeByteArray)
- Android之高德地图定位
- 小白说OpenMP:从头到尾
- 最长公共子序列
- Swift 单例
- 学生信息管理系统-书本实例
- java实现几种常见的排序算法
- 初识JSON
- 解决Hibernate原生SQL映射问题