ViewFlipper: размер растрового изображения превышает бюджет виртуальной машины - PullRequest
1 голос
/ 12 мая 2011

Я использую ViewFlipper, чтобы показать некоторые изображения из БД. Затем я беру значения BLOB-объекта в ArrayList, преобразуя каждый байтовый массив в растровое изображение.

А затем я устанавливаю эти изображения для каждого изображения в ViewFlipper. Если количество изображений ниже 10, то оно работает нормально. Но если он превышает 10, то внезапно он получил исключение: OutOfMemoryException: размер растрового изображения превышает бюджет виртуальной машины.

Когда я использую inSampleSize для BitmapFactory.Options, он работает нормально. Но я хочу отобразить изображение с фактической высотой и шириной. Как я могу сделать это без исключения?

Мой код:

ViewFlipper vfImage    = (ViewFlipper)findViewById(R.id.vfImage);
for(Photos objPhotos :arPhotos)
 {
     byte[] btImages = null;   
     Bitmap bitmapImage = null;
     btImages = objPhotos.getImage();
     ImageView imgPhoto= new ImageView(this);
     bitmapImage    = BitmapFactory.decodeByteArray(btImages, 0, btImages.length);
     imgPhoto.setImageBitmap(bitmapImage);
     vfImage.addView(imgPhoto);
}
vfImage.startFlipping();

Пожалуйста, помогите мне .. Спасибо ...

Ответы [ 2 ]

0 голосов
/ 07 июня 2011

Как только вы закончили использовать свои растровые изображения, попробуйте сделать его пустым, как это,

 Bitmap bitmapImage = null; 

Попробуйте добавить вышеуказанную строку в последнюю строку вашего цикла for. Это означает, что каждый раз, когда растровое изображение становится нулевым, это уменьшает объем памяти, захваченной вашим растровым изображением. Также попробуйте предоставить

bitmapImage.recycle(); 

Это перезапустит растровое изображение и предоставит вам свободную память.

Также вы можете обратиться к моему вопросу здесь

0 голосов
/ 12 мая 2011

Вам следует подумать о выгрузке растровых изображений, которые в данный момент не отображаются, чтобы сохранить в памяти только те, которые находятся на экране прямо сейчас.Удачи!

...