【问题标题】:Wait for async to finish when calling getter method?调用getter方法时等待异步完成?
【发布时间】:2023-04-08 00:46:02
【问题描述】:

我有一个模型,它有一个 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 时是否有可能等待异步任务完成????

【问题讨论】:

    标签: android bitmap android-asynctask


    【解决方案1】:

    是的,有可能:-)

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

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

    【讨论】:

    • 我试过了但没用... public Bitmap getBitmap(){ async.get();返回 bmImage; }
    猜你喜欢
    • 1970-01-01
    • 2019-10-19
    • 2014-08-09
    • 2013-02-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-19
    • 1970-01-01
    相关资源
    最近更新 更多