2014-01-29 2 views
0

У меня есть модель, которая имеет метод setImgURL, когда вызов пользователя этот метод он сохраняет URL изображения и вызовите задачу асинхронной, чтобы загрузить изображение из URL и сохранить его в виде растрового изображенияДождитесь завершения асинхронного вызова при вызове метода getter?

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

да это возможно :-)

AsyncTask имеет метод, называемый GET() - если сначала выполнить ваше задание, а потом где-то необходимо, вызовите метод Get() на вас объект AsyncTask, то ваше приложение будет ждать завершения задачи и сбросить возвращаемый тип.

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

+0

Dont выполнить Get() на UI потоке, то это будет в конечном итоге в НРУ. – marcinj

+0

Я пробовал это, но не работал ... public Bitmap getBitmap() { async.get(); return bmImage; } –

Смежные вопросы