Java IOException:流已关闭,BitmapFactory解码流
我从一个API得到一个流,它是一个图片。我在Asynctask的Java IOException:流已关闭,BitmapFactory解码流,java,android,asynchronous,inputstream,Java,Android,Asynchronous,Inputstream,我从一个API得到一个流,它是一个图片。我在Asynctask的doInBackground中获取流我没有针对该InputStream的崩溃或NullPointerException。但当我尝试使用它构建位图时,它总是返回我流已关闭,而我根本不关闭它 private class Worker extends Asynctask<.....> { private StreamSource streamSource; private Bitmap bmp; @
doInBackground中获取流
我没有针对该InputStream
的崩溃或NullPointerException
。但当我尝试使用它构建位图时,它总是返回我流已关闭
,而我根本不关闭它
private class Worker extends Asynctask<.....> {
private StreamSource streamSource;
private Bitmap bmp;
@Override
public void doInBackground (.....) {
try {
streamSource = gallery.read ();
bmp = BitmapFactory.decodeStream (streamSource.getStream ()); // HERE ! :@
} catch (Exception e) {
e.printStackTrace ();
}
}
@Override
public void onPostExecute (.....) {
imageView.setImageBitmap (bmp);
}
}
异常被抛出:BitmapFactory.decodeStream
我可以保证我没有关闭流,如果我想这样做,我会这样做:streamSource.close()代码>但我没有
你们知道这是什么原因吗?谢谢。BitmapFactory.decodeStream很可能在完成后关闭流。如果您在AsyncTask工作人员之间共享streamSources,则可能有一个正在关闭流,另一个正在尝试读取流。您是否尝试使用runOnUiThread对流进行解码?比如写
runOnUiThread(new Runnable(){
public void run() {
streamSource = gallery.read ();
bmp = BitmapFactory.decodeStream (streamSource.getStream ()); // HERE ! :@
}
});
好吧,我必须假设这没有错,而且这条流实际上是关闭的。流是在什么时候打开的?@Hypino:谢谢:)流是在read()
中打开的,使用Runnable
和Asynctask
有什么区别?仅供参考所有繁重的工作都应该在后台完成:)
runOnUiThread(new Runnable(){
public void run() {
streamSource = gallery.read ();
bmp = BitmapFactory.decodeStream (streamSource.getStream ()); // HERE ! :@
}
});