关于重复使用InputStream对象的

来源:互联网 发布:淘宝怎么发布课程 编辑:程序博客网 时间:2024/04/29 16:55

关于重复使用InputStream对象的解决方法

项目中使用Okhttp加载网络图片时,通过response.body().byteStream()获得InputStream流对象,
第一次需要用到该流去获得图片尺寸,而真正取图片显示时又使用了该流,当你去使用BitmapFactory.decodeStream(is, null, ops)获取bitmap时,bitmap总是null。

第一次读取InputStream对象后,第二次再读取时可能已经到Stream的结尾了(EOFException)或者Stream已经close掉了,此时的流的起始位置已经被移动。
而InputStream对象本身不能复制,因为它没有实现Cloneable接口。此时,可以先把InputStream转化成ByteArrayOutputStream,后面要使用InputStream对象时,再从ByteArrayOutputStream转化回来就好了。代码如下:
这里写图片描述

0 0