我的模型有一个方法setImgURL,当用户调用此方法时,它保存图像URL并调用异步任务从URL加载图像并将其保存为位图图像
public void setImgURL(String imgURL) {
this.imgURL = imgURL;
LoadImgFromURL().execute(getImgURL());
}
private AsyncTask<String, Void, Bitmap> LoadImgFromURL(){
return new AsyncTask<String, Void, Bitmap>() {
protected Bitmap doInBackground(String... urls) {
Bitmap mIcon11 = null;
Log.i(MainActivity.TAG,"Loading image");
String urldisplay = urls[0];
try {
InputStream in = new java.net.URL(urldisplay).openStream();
mIcon11 = BitmapFactory.decodeStream(in);
} catch (Exception e) {
Log.e("Error", e.getMessage());
e.printStackTrace();
}
return mIcon11;
}
protected void onPostExecute(Bitmap result) {
setBitmap(result);
}
};
}
我有另一个getBitmap方法,只返回位图图像
public Bitmap getBitmap(){
return bmImage;
}
是否可以在用户调用getBitmap时等待异步任务完成????
答案 0 :(得分:0)
是的,有可能: - )
AsyncTask有一个名为get()的方法 - 如果你先执行任务,然后在某个地方需要,在你的AsyncTask对象上调用方法get(),然后你的应用程序将等待任务完成,并重新启动返回类型。
http://developer.android.com/reference/android/os/AsyncTask.html