Błąd pamięci poza ładowaniem bitmap

Mam aplikację na Androida z 3 funkcjami:

A1 -zaczyna się-> A2 -zaczyna się-> A3 -po zakończeniu procesu: zaczyna się-> A1

(więc nie "kończę ();") aplikacji. rozpoczynam kolejne czynności za pomocą "startActivity (..);" cały czas po interakcji użytkownika

więc w tych 3 działaniach występuje pętla. Podczas każdego działania wyświetlaję 3-9 zdjęć, umieszczonych na karcie SD, które ładuję za pomocą następującej funkcji:

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

To wszystko działa. Ale czasami (po kilkukrotnym zapętleniu przez moje działania) moja aplikacja ulega awarii.

Logcat mówi mi:

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)

Ktoś może dać moje wskazówki, jak radzić sobie z awariami? Może to dlatego, że moje aktywności są ustawione na „wstrzymane” zamiast je poprawnie zamykać?

questionAnswers(4)

yourAnswerToTheQuestion