/ / Como reciclar um bitmap em uma AsyncTask? Android - android, bitmap, android-asynctask, reciclar

Como reciclar um bitmap em um AsyncTask? Android - android, bitmap, android-asynctask, reciclar

Estou escrevendo um pequeno aplicativo Android que usa uma asyncTask para exibir uma imagem de um serviço da web. O código funciona, mas fui informado de que devo reciclar este bitmap.

Minha pergunta é: há uma maneira de reciclar esse bitmap depois que terminar de usá-lo?

Tentei uma solução usando onStop () e o bitmap não foi reciclado ou a imagem não foi exibida.

Aqui está o meu OnCreate

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

E aqui está minha 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);

}

Respostas:

2 para resposta № 1

Substituir método View.onDetachedFromWindow() e recicle o seu Bitmap há.