2013-03-17 3 views
0

Короче говоря, это неэффективный способ перемасштабирования изображений каким-либо образом, возможно, из-за сбора мусора?Эффективное изменение размера изображения

playBg_ = BitmapFactory.decodeResource(res_, R.drawable.field); 
playBg_ = Bitmap.createScaledBitmap(playBg_, screenWidth_, screenHeight_, false); 

И было бы лучше сделать что-то подобное?

Bitmap tempBmp = BitmapFactory.decodeResource(res_, R.drawable.field); 
playBg_ = Bitmap.createScaledBitmap(tempBmp, screenWidth_, screenHeight_, false); 
tempBmp.recycle(); 

Или есть лучший способ?

Спасибо!

+0

проверить эту тему [Эффективное отображение растровых изображений] (https://developer.android.com/training/displaying-bitmaps/index.html) – shaobin0604

ответ

0

Я обнаружил, что требуется второй метод. Первый метод оставил слишком много памяти, потраченной впустую, прежде чем сбор мусора сможет добраться до него. Я также обнаружил, что мне обязательно нужно переписать все мои изображения перед загрузкой новых. Просто разыгрывать их и ожидать сбора мусора, чтобы забрать его, недостаточно. Из-за этого у меня постоянно не хватало памяти.

1

Вы можете прочитать свой вывод logcat, установив aLogcat на свой eeePad.

+0

О? Это может пригодиться. Благодаря!! – CodeMonkey

+0

Fyi, aLogcat не работает для JellyBean, если вы не root. К счастью, моя таблетка была сэндвичем с мороженым. Мои ошибки действительно были не в памяти. – CodeMonkey

0

Второй способ лучше. Но почему вы расшифровываете Bitmap самостоятельно и меняете его размер?

Если вы хотите, чтобы отобразить его в качестве фона, просто используйте

myBgView.setBackground(R.drawable.field); 

на вашей активности родительского вида.

+0

Это был один пример. У меня есть несколько изображений, которые не являются фонами. – CodeMonkey

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