我有经典的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;
}
}
但是加载图像的时间很长。当我开始这个活动时,除了图像之外,所有东西都被加载,只有等了一秒钟后我才能看到它。有什么问题?
答案 0 :(得分:1)
简单...因为打开与资源URL的连接并下载所有必需字节需要时间。此外,性能也可能因Internet连接速度而异。
答案 1 :(得分:1)
viewPicture.setBackgroundDrawable(new BitmapDrawable(bitmap));
应该在UI线程上,在AsyncTask的onPostExecute方法中完成。
此外,关闭你使用的流(如果!null)和try / catch的一个漂亮的finally块。
不要担心时间,这是要走的路。