这个问题其实早就遇到了,由于停了几天电无法工作,今天就把这问题记录下分享下。利用BitmapFactory加载网络中的图片时,使用decodeStream方法会返回null的错误。主要是由于下面几个原因导致的:
- 流已经关闭
- decodeStream调用了两次
- decodeStream的BUG(本文不讨论,详见参考文章)
这个问题很有意思,刚开始遇到的时候在国内外到找到许多不同的解决方法,在stackoverflow上也有提问相关的问题(详见参考文章),本人经过验证总结后和大家分享下。
流已经关闭的解决方法
出现这个问题的主要原因是解析网络流的代码写在了流关闭后,只需要分析清楚流在什么时候关闭即可。decodeStream调用了两次的问题分析和解决方法
本文主要对此情况进行分析:
首先是如何重现这种问题,很显然为了得到图片的分辨率,一般都会先把inJustDecodeBounds设置为true,解析图片,这时候的decodeStream是必定返回null,api本身设计就是这样,
options.inJustDecodeBounds = true;
BitmapFactory.decodeStream(is, null, options);
但是如果在上述代码再执行类