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

当在Android中使用BitmapFactory的decodeStream方法加载网络图片时,可能会遇到返回null的情况。这通常由流已关闭、两次调用decodeStream或源代码中的bug引起。解决方法包括确保流未在解析前关闭,避免重复调用decodeStream,并注意流的读取位置。建议将网络流保存到本地文件再使用decodeFile方法,以避免这些问题。
9592

被折叠的 条评论
为什么被折叠?



