java.lang.OutOfMemoryError: Bitmap-Größe überschreitet VM-Budget

So habe ich ein Lazy Image Loader für meineListView. Ich benutze auchdieses Tutorial für eine bessere Speicherverwaltung und habenSoftReference Bitmap-Bilder, die in meinem @ gespeichert siArrayList.

MyListView works lädt 8 Bilder aus einer Datenbank, und sobald der Benutzer ganz nach unten gescrollt hat, lädt er weitere 8 usw. usw. Es gab kein Problem, wenn es ungefähr 35 Bilder oder weniger gab, aber keine mehr und meine App schließt mitOutOfMemoryError.

Das, was ich nicht verstehen kann, ist, dass ich meinen Code in einem Versuchsfang habe:

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();
}

Aber der try catch-Block fängt das @ nicht OutOfMemory Ausnahme und von dem, was ich verstehe, dieSoftReference Bitmap-Bilder sollten gelöscht werden, wenn der Speicher der Anwendung zur Neige gehOutOfMemory Ausnahme wird geworfen.

Was mache ich hier falsch?

Antworten auf die Frage(6)

Ihre Antwort auf die Frage