我正在使用AsyncTask下载图像,并希望将下载的图像发送到UI线程。这是它的代码。
public class DownloadImageTask extends AsyncTask<URL, Void, Drawable>{
@Override
protected Drawable doInBackground(URL... imgURL) {
// TODO Auto-generated method stub
InputStream in;
Bitmap bitmap;
Drawable d;
try {
//in = (InputStream) imgURL[0].getContent();
bitmap = BitmapFactory.decodeStream(imgURL[0].openConnection().getInputStream());
d =(Drawable)new BitmapDrawable(bitmap);
return d;
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
return null;
}
}
}
感谢。
答案 0 :(得分:2)
执行doInBackround()
后,返回的值将传递到onPostExecute()
中的AsynkTask
,因此您应该覆盖onPostExecute()
方法,然后您将收到{ {1}}。请注意,Drawable
和onPostExecute()
在UI线程上运行,因此您可以使用这2种方法修改/更新UI。
答案 1 :(得分:0)
类DownloadTask扩展了AsyncTask {
@Override
protected Boolean doInBackground(Url... url) {
Bitmap b =
// do some bitmap downloader code from web url
return b;
}
@Override
protected void onPostExecute(Bitmap image) {
imageView.setImageBitmap(image);
}
}
删除此代码,因为U无法从doInBackGround()....
设置图像但是如果你想设置它有两种方法。