2013-06-19 6 views
0

Я пишу небольшое приложение для Android, которое использует asyncTask для отображения изображения из веб-службы. Код работает, но мне было доведено до сведения, что я должен переработать это растровое изображение.Как переработать растровое изображение в AsyncTask? Android

Мой вопрос в том, есть ли способ утилизировать это растровое изображение после того, как я закончил использовать его?

Я попытался найти решение, используя onStop(), и либо растровое изображение не было переработано, либо изображение вообще не отображалось.

Вот мой OnCreate

protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     //Other unrelated things 
     Intent intent = getIntent(); 
     Bundle bundle = intent.getExtras(); 
     imageUrl = bundle.getString("imageUrl"); 
     displayImage(); 
    } 

А вот мой AsyncTask

private void displayImage() { 
     new AsyncTask<String, Void, Bitmap>() { 
      protected Bitmap doInBackground(String... params) { 
       try { 
        return loadBitmap(params[0]); 
       } catch (Exception e) { 
        Logger.e(TAG, getString(R.string.error_loading_image_bitmap)); 
        return null; 
       } 
      } 

      protected Bitmap loadBitmap(String urlSpec) throws IOException { 
       InputStream is = new URL(urlSpec).openStream(); 
       try { 
        return BitmapFactory.decodeStream(is); 
       } finally { 
        is.close(); 
       } 
      } 

      protected void onPostExecute(Bitmap bitmap) { 
       if (bitmap != null) { 
        ImageView invoiceItemImageView = (ImageView) findViewById(R.id.some_id_here); 
        invoiceItemImageView.setImageBitmap(bitmap); 

       } 

      } 

     }.execute(imageUrl); 

    } 

ответ

2

Переопределить метод View.onDetachedFromWindow() и утилизировать Bitmap там.

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