android BitmapFactory.decodeByteArray()=null
来源:互联网 发布:视频直播app源码 编辑:程序博客网 时间:2024/04/29 17:47
String urlString = "http://10.11.0.121:8914/ElectronicMagazine/TemporaryFile/218.jpg"; URL url = new URL(urlString); URLConnection connection = url.openConnection(); InputStream is = connection.getInputStream(); BufferedInputStream bis = new BufferedInputStream(is); bmp = BitmapFactory.decodeStream(bis); bis.close();
上面是我的程序源码
在今天上午遇到一个比较灵异的问题(通常我认为在程序中不该出现的问题,或检查几遍代码没问题的情况下出现的问题称灵异问题)
在第一个Acvitity中有一个button。点击这个Button跳转到第二个Activity中并从网络下载图片填充到ImageView中,第一次点击跳转后图片成功填充至ImageIVew。返回再次点击的时候无效,第三次点击的时候又正常,继续点击又无效。这个问题让我很苦恼
我认为可能是缓存的问题,测试缓存,在Activity onStop()的时候给个一个this.finsh();结束当前Activity。程序再次跑起来,问题依然在。
在仔细检查代码后发现可能是输入流并未关闭的问题,发现这个问题后很惊喜,以为关一下流就可以解决了这个困扰了半天的问题了,于是关闭后再次运行。我去,灵异这哥们还呆在原地。
做了一个小Demo测试了一下,点按钮跳到另外一个页面并下载图片填充ImageView。在Demo中百试百灵,这让我很是郁闷,Demo中可以,为什么在我的程序中不行呢。
没办法了再次调试呗,这一调出现在了一个很大的问题BitmapFactory.decodeByteArray()返回值竟然为null。我说怎么Bitmap没东西呢
第四步,在网上百度,最后http://blog.csdn.net/catoop/article/details/8470031 (catoop)这哥们也遇到和我同样的问题,还好前辈已有解决方法,大喜,分析了一下他的解决方案,并运用在我的程序中,灵异那哥们感觉玩够了,终于走了,又还我程序一个太平世界。
解决方法
这个android 的一个bug 。在android 2.2 以下(我在测试中发现貌似2.3也不行) 用 BitmapFactory.decodeStream() 这个方法,会出现概率性的解析失败的异常。而在高版本中,eg 2.3 则不会出现这种异常。
//定义一个根据图片url获取InputStream的方法 public static byte[] getBytes(InputStream is) throws IOException { ByteArrayOutputStream outstream = new ByteArrayOutputStream(); byte[] buffer = new byte[1024]; // 用数据装 int len = -1; while ((len = is.read(buffer)) != -1) { outstream.write(buffer, 0, len); } outstream.close(); // 关闭流一定要记得。 return outstream.toByteArray(); }//然后使用方法decodeByteArray()方法解析编码,生成Bitmap对象。 byte[] data = getBytesFromInputStream(new URL(imgUrl).openStream()); Bitmap bm = BitmapFactory.decodeByteArray(data, 0, data.length);
- android BitmapFactory.decodeByteArray()=null
- android获取网络图片的用法 BitmapFactory.decodeByteArray 返回null
- BitmapFactory.decodeByteArray() 返回null,分析与解决
- 调用 BitmapFactory.decodeByteArray 函数返回 null 值
- Xamarin.Android OOM 思路整理 (BitmapFactory.DecodeByteArray)
- android中BitmapFactory.decodeByteArray的用法
- BitmapFactory.decodeByteArray函数获取的bitmap为null
- android获取网络图片的用法 BitmapFactory.decodeByteArray
- decodeByteArray返回null
- android BitmapFactory.decodeFile()返回为null问题
- 解决android BitmapFactory.decodeStream()返回null
- android decodeByteArray outofmemoryerror
- BitmapFactory.decodeStream返回null
- BitmapFactory.decodeFile返回NULL
- java 图片解析,血的教训 BitmapFactory.decodeByteArray() 是个邪恶的方法
- 通过BitmapFactory.decodeByteArray把byte[]转成Bitmap出现的OOM的解决方法
- 血的教训 BitmapFactory.decodeByteArray() 是个邪恶的方法
- 通过BitmapFactory.decodeByteArray把byte[]转成Bitmap出现的OOM的解决方法
- Spring的配置、生命周期、依赖注入bean的操作
- 最小距离问题
- Ubuntu 一键安装Adobe Flash Player
- Android手机安全软件之设置电话拦截返回音浅析
- 将Percona 5.5 作为我们的标准MySQL
- android BitmapFactory.decodeByteArray()=null
- 测试题
- linux more命令详解
- 获取手机屏幕分辨率
- Android Init进程源码分析
- 山东大学-WIZnet网络控制实验室揭牌仪式成功举行
- java.lang.IllegalStateException: STREAM错误的理解
- ince下dirs文件和source文件(一)
- poj 3415 Common Substrings(长度大于k的相同子串对数xian 后缀数组+单调桟统计)