У меня есть активность с пустым ImageView и кнопкой.После нажатия кнопки я отображаю медиа галерею устройства, пользователь выбирает изображение, которое передается в действие через намерениеЯ использую URI изображения из возвращенных данных и заполняю ImageView, например:
private ImageView pic;
@Override
public void onCreate(Bundle savedInstanceState)
{
pic = (ImageView)findViewById(R.id.bbChildImage);
}
protected void onActivityResult(int requestCode, int resultCode, Intent data)
{
if(resultCode == RESULT_OK)
{
URI currImageURI = data.getData();
pic.setImageURI(currImageURI);
}
}
Теперь, если я выберу другое изображение из галереи, после того, как данные возвращены, я получаю растровое изображениеСвязанное исключение OutOfMemory.
Я нашел два способа избавиться от этого.Я делаю это перед назначением URI:
((BitmapDrawable)pic.getDrawable()).getBitmap().recycle();
или вместо того, чтобы назначить URI представлению, сначала получаю растровое изображение, а затем назначаю его следующим образом:
Bitmap thumbnail = MediaStore.Images.Media.getBitmap(this.getContentResolver(), currImageURI);
pic.setImageBitmap(thumbnail);
Я не уверен, какой из них лучше.Кроме того, если есть лучшие способы, я был бы признателен за обратную связь.
Спасибо.