Java IOException:流已关闭,BitmapFactory解码流

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; @

我从一个API得到一个流,它是一个图片。我在Asynctask的
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 ! :@

        }
    });