Out of Memory Error beim Laden von Bitmaps

ich habe eine android app mit 3 aktivitäten:

A1 -beginnt-> A2 -beginnt-> A3 -wenn sein Prozess beendet ist: beginnt-> A1

(damit ich nicht "finish ();" eine app. ich starte die nächsten aktivitäten mit "startActivity (..);" die ganze zeit nach benutzerinteraktion)

Es gibt also eine Schleife in diesen 3 Aktivitäten. Bei jeder Aktivität zeige ich 3-9 Bilder auf der SD-Karte an, die ich mit folgender Funktion lade:

try
{
    Uri selectedImageURI = Uri.parse(strImagePath);
    File imgFile = new  File(getRealPathFromURI(selectedImageURI, c));
    Bitmap myBitmap = BitmapFactory.decodeFile(imgFile.getAbsolutePath());
    ivTmp.setImageBitmap(myBitmap);
}catch (Exception e)
{
    return null;
}

Das alles funktioniert. Aber manchmal (nach ein paar Durchläufen meiner Aktivitäten) stürzt meine App ab.

Logcat sagt mir:

01-16 13:42:15.863: DEBUG/dalvikvm(23161): GC_BEFORE_OOM freed 10K, 9% free 59019K/64400K, paused 29ms, total 30ms
01-16 13:42:15.863: ERROR/dalvikvm-heap(23161): Out of memory on a 8018704-byte allocation.
01-16 13:42:15.863: ERROR/AndroidRuntime(23161): FATAL EXCEPTION: main
        java.lang.OutOfMemoryError
        at android.graphics.BitmapFactory.nativeDecodeAsset(Native Method)
        at android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:502)
        at android.graphics.BitmapFactory.decodeResourceStream(BitmapFactory.java:355)
        at android.graphics.drawable.Drawable.createFromResourceStream(Drawable.java:785)
        at android.content.res.Resources.loadDrawable(Resources.java:1965)
        at android.content.res.Resources.getDrawable(Resources.java:660)
        at android.widget.ImageView.resolveUri(ImageView.java:616)
        at android.widget.ImageView.setImageResource(ImageView.java:349)
        at <MyApp>.MyActivity$6.run(MyActivity.java:143)
        at android.os.Handler.handleCallback(Handler.java:725)
        at android.os.Handler.dispatchMessage(Handler.java:92)
        at android.os.Looper.loop(Looper.java:137)
        at android.app.ActivityThread.main(ActivityThread.java:5039)
        at java.lang.reflect.Method.invokeNative(Native Method)
        at java.lang.reflect.Method.invoke(Method.java:511)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
        at dalvik.system.NativeStart.main(Native Method)

Kann mir jemand ein paar Tipps geben, wie man mit Abstürzen umgeht? Vielleicht liegt es daran, dass meine Aktivitäten auf "Angehalten" gesetzt sind, anstatt sie korrekt zu schließen?

Antworten auf die Frage(4)

Ihre Antwort auf die Frage