调用getter方法时等待异步完成?

时间:2014-01-29 08:15:18

标签: android bitmap android-asynctask

我的模型有一个方法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时等待异步任务完成????

1 个答案:

答案 0 :(得分:0)

是的,有可能: - )

AsyncTask有一个名为get()的方法 - 如果你先执行任务,然后在某个地方需要,在你的AsyncTask对象上调用方法get(),然后你的应用程序将等待任务完成,并重新启动返回类型。

http://developer.android.com/reference/android/os/AsyncTask.html