在我的Android应用程序中,我使用AsyncTask从互联网下载图像。
我传递URL,我的AsyncTask进行下载。但是,如何将位图返回到我的活动中?目前,我将回调函数传递给我的异步任务构造函数,并在OnPostExecute中调用回调函数。这样做的方式正确吗?
我传递URL,我的AsyncTask进行下载。但是,如何将位图返回到我的活动中?目前,我将回调函数传递给我的异步任务构造函数,并在OnPostExecute中调用回调函数。这样做的方式正确吗?
你可以这样做:
public Bitmap btm;
public void onClick(View v) {
new DownloadImageTask().execute("http://example.com/image.png");
}
private class DownloadImageTask extends AsyncTask<String, Void, Bitmap> {
protected Bitmap doInBackground(String... urls) {
return loadImageFromNetwork(urls[0]);
}
protected void onPostExecute(Bitmap result) {
// set image for ImageView
mImageView.setImageBitmap(result);
// orsimply save it
btm = result;
}
}
doInBackground
方法返回的结果会传递到onPostExecute
方法中,所以只需在doInBackground
方法中简单地返回位图,并在onPostExecute
方法中处理即可。
onDestroy
中重置引用。 - mxk