Как правильно очистить ImageView?

Например, у меня в Activity есть такой код (инициализацию переменных я пропускаю):

ImageView iview; //some ImageView
Bitmap b; //some Bitmap
iview.setImageBitmap(b);

Вопрос - как правильно очистить ресурсы iview (с уничтожением представления или без него)? Освободит ли ImageView свои ресурсы (используемые в машинном коде) после b.recycle()?

Я полагаю, что ImageView не просто освобождает ресурсы после Activity onStop (или onDestroy).


person Dmitry Zaytsev    schedule 29.02.2012    source источник


Ответы (5)


нет, вам нужно отвязатьDrawables, вы можете сделать это, установив iview.setImageDrawable(null);

person jeet    schedule 29.02.2012

Вы можете часто использовать это работает:

imageView.setImageResource(0);
person Dhiraj Singh    schedule 12.01.2017

viewToUse.setImageResource(android.R.color.transparent);
  • Я думаю, что использование setImageResource с цветовым идентификатором вызовет проблемы со сбоями на Android 2.2.1, обязательно проверьте это.
person Ashraf Alshahawy    schedule 12.02.2015

если у вас ничего не работает, попробуйте установить цвет фона представления на цвет макета. если мой цвет макета белый, вы можете сделать следующее:

 edit_countflag.setBackgroundColor(Color.parseColor("#ffffff"));
//then set the image
 edit_countflag.setImageResource(R.drawable.flag_id);
person Syed Danish Haider    schedule 21.05.2018

person    schedule
comment
imgview.setImageResource(0)не работает (не очищено мое изображение из просмотра изображения) установка null работает - person shem; 21.10.2013
comment
Работает только при использовании с uri или ресурсом: public void setImageResource (int resId) {if (mUri! = Null || mResource! = ResId) {...} - person pablisco; 23.04.2014
comment
setImageResource имеет побочные эффекты в более ранних версиях - person Krafty; 25.06.2014