在我的Android应用程序中,我使用AsyncTask从互联网下载图像。
我传递了url,我的AsyncTask进行了下载。但是我如何将位图返回到我的活动。目前我将回调函数传递给我的asynctask构造函数,并在OnPostExecute中调用回调函数。这是正确的方法。
答案 0 :(得分:8)
您可以这样做:
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;
}
}
答案 1 :(得分:7)
您从doInBackground
返回的结果会传递给onPostExecute
,因此只需从doInBackground
方法返回位图并在onPostExecute
处理它。
答案 2 :(得分:1)
回调函数工作正常,您也可以传入Activity或接口。需要注意的关键是活动没有改变或被破坏。
http://evancharlton.com/thoughts/rotating-async-tasks/提供了有关AsyncTasks的一些很好的信息。