java.lang.OutOfMemoryError: размер растрового изображения превышает бюджет виртуальной машины

Так что у меня есть ленивый загрузчик изображений для моегоListView, Я также используюэтот урок для лучшего управления памятью и иметьSoftReference Растровые изображения хранятся в моемArrayList.

мойListView работает загружает 8 изображений из БД, затем, как только пользователь прокручивает до конца, загружает еще 8 и т. д. и т. д. Не было никаких проблем, когда было около 35 изображений или меньше, но больше и мое приложение Force закрывается сOutOfMemoryError.

То, что я не могу понять, это то, что у меня есть код внутри try catch:

try
{
    BitmapFactory.Options o = new BitmapFactory.Options();
    o.inJustDecodeBounds = true;
    BitmapFactory.decodeByteArray(image, 0, image.length, o);

    //Find the correct scale value. It should be the power of 2.
    int width_tmp = o.outWidth, height_tmp = o.outHeight;
    int scale = 1;

    while(true)
    {
        if(width_tmp/2 < imageWidth || height_tmp/2 < imageHeight)
        {
            break;
        }

        width_tmp/=2;
        height_tmp/=2;
        scale++;
    }

    //Decode with inSampleSize
    BitmapFactory.Options o2 = new BitmapFactory.Options();
    o2.inSampleSize = scale;
    bitmapImage = BitmapFactory.decodeByteArray(image, 0, image.length, o2);        
}
catch (Exception e)
{
    e.printStackTrace();
}

Но блок try catch не перехватываетOutOfMemory исключение и из того, что я понимаюSoftReference Растровые изображения должны быть очищены, когда приложение исчерпывает память, останавливаяOutOfMemory исключение выбрасывается.

Что я здесь не так делаю?

Ответы на вопрос(3)

Ваш ответ на вопрос