0

我有经典的 AsyncTask 来加载图像:

private class DownloadImageTask extends AsyncTask<String,Void,Bitmap> {

    Bitmap  bitmap = null;

    @Override
    protected Bitmap doInBackground(String... str) {
        try{   

            InputStream in = new java.net.URL(picture).openStream();
            bitmap = BitmapFactory.decodeStream(new SanInputStream(in));
            //viewPicture.setImageBitmap(bitmap);
            viewPicture.setBackgroundDrawable(new BitmapDrawable(bitmap));


        }
        catch(Exception e){
            e.printStackTrace();
        }
        return bitmap;
    }
}

但是图像的加载时间很长。当我开始此活动时,除了图像之外的所有内容都已加载,仅在等待一秒钟后我才能看到它。问题是什么?

4

2 回答 2

1

很简单……因为打开到资源 URL 的连接并下载所有需要的字节需要时间。此外,性能也可能因 Internet 连接速度而异。

于 2012-05-15T06:38:15.073 回答
1
viewPicture.setBackgroundDrawable(new BitmapDrawable(bitmap));

应该在 UI 线程上完成,在 AsyncTask 的 onPostExecute 方法中。

此外,使用 try/catch 的一个不错的 finally 块关闭您使用的流(如果!null)。

不要担心时间,这是要走的路。

于 2012-05-15T06:38:26.003 回答