В моем приложении я загружаю множество изображений из Интернета.Пока все работает нормально:
@Override
public void onSuccess( byte[] response )
{
Bitmap image = BitmapFactory.decodeByteArray( response, 0, response.length, options );
...
}
Но на самом деле было бы неплохо использовать только часть изображения во время процесса подачи заявки.Поэтому я попробовал что-то вроде этого:
@Override
public void onSuccess( byte[] response )
{
Bitmap source = BitmapFactory.decodeByteArray( response, 0, response.length, options );
Bitmap image = Bitmap.createBitmap( source, 0, 0, source.getWidth(), source.getHeight() - 30 );
source.recycle();
source = null;
...
}
Но мое приложение продолжает падать после загрузки нескольких десятков изображений (OutOfMemoryException).Поэтому (я полагаю) у меня есть две возможности избавиться от высоты в 30 пикселей (на самом деле это информация о кредите, но не волнуйтесь, я не краду, все нормально, если я ее скрываю):
- Обрезать и сохранить изображение с меньшим использованием памяти, или
- Манипулировать ImageView, чтобы скрыть нижнюю часть изображения (высота может изменяться в зависимости от масштаба)
Но янужен совет по этим методам.