当前位置:   article > 正文

关于重复使用InputStream对象的_response.body().asinputstream() 获取流后如何反复使用流

response.body().asinputstream() 获取流后如何反复使用流

关于重复使用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转化回来就好了。代码如下:
这里写图片描述

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小丑西瓜9/article/detail/147223
推荐阅读
相关标签
  

闽ICP备14008679号