안녕하세요~ 선배님들~~ 꾸벅~

입문한지 얼마안된 경험치 매우낮은 평민입니다 

프레임 에이메이션으로 이미지를 돌렸는데 out of memory 가 나면서 어플이 죽어버립니다.

imageView01 위에 프레임레이아웃으로 imageView02 가 올려져 있습니다.

실행시 기본적으로 imageView01 에서 프레임 에니메이션이 재생되고 있으며 화면을 터치하거나 일정 버튼을 터치하게되면

imageView02에 또다른 프레임 에니메이션이 돌아가게 구현을 했습니다.

이런 액티비티가 2개입니다. 메인페이지에서 1번, 2번 각각의 엑티비티로 이동하는 메뉴버튼이 있구요~~

 1번 엑티비티를 구동한뒤 백버튼을 이용해 메인화면으로 나올때까진 괜찮습니다 하지만  2번 엑티비티로 이동할려하면 아웃오브 메모리가 나면서 어플이 죽어버립니다.    2번을 먼저 실행시켰다가 메인으로 이동후 1번 으로 이동시에도 동일합니다.

애니메이션은 xml 파일에 이미지프레임들을 넣어주고 java 파일에서 불러오는 방식입니다.

<java 소스내용>


프레임에니메이션 (AnimationDrawable) 아웃 오브 메모리 ㅠ_ㅠ 



package com.doubleclass.godofprank;


import android.app.Activity;

import android.graphics.drawable.AnimationDrawable;

import android.graphics.drawable.Drawable;

import android.os.Bundle;

import android.os.Handler;

import android.view.View;

import android.widget.ImageButton;

import android.widget.ImageView;

import android.widget.LinearLayout;


public class game_04 extends Activity implements SensorEventListener {



  private LinearLayout layout1;

  private LinearLayout layout2; 


ImageView imageView01;

ImageView imageView02;


Drawable ani_game04;

Drawable ani_game04_fin;




@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.game04);




        layout1 = (LinearLayout) findViewById(R.id.fin_layout);

    

        layout2 = (LinearLayout) findViewById(R.id.btn_layout);



        

//뒤로가기 버튼 시작

ImageButton btnb = (ImageButton) findViewById(R.id.btnBack);

btnb.setOnClickListener(new ImageButton.OnClickListener() {

public void onClick(View v) {

finish();

}

});





ImageButton btnC = (ImageButton) findViewById(R.id.btnCatch);

btnC.setOnClickListener(new ImageButton.OnClickListener() {

public void onClick(View v) {

layout2.setVisibility(View.INVISIBLE);

layout1.setVisibility(View.VISIBLE);

                ImageView imgView02 = (ImageView)findViewById(R.id.imageView02);

                imgView02.setBackgroundResource(R.drawable.ani_game04_fin);

                AnimationDrawable frame02 = (AnimationDrawable)imgView02.getBackground();

                 frame02.start();

}

});

}


    @Override

    protected void onResume()

    {

        super.onResume();

         

        // 뷰가 화면에 뿌려지기 전에는 애니메이션이 시작하지 못한다. 

        // 약간의 딜레이를 주기 위하여 핸들러를 이용한다.

        new Handler().postDelayed(new Runnable()

        {

            @Override

            public void run()

            {

                ImageView imgView01 = (ImageView)findViewById(R.id.imageView01);

                imgView01.setBackgroundResource(R.drawable.ani_game04);


                AnimationDrawable frame01 = (AnimationDrawable)imgView01.getBackground();


                frame01.start();

            }

        }, 500);

         


@Override

protected void onDestroy() {

super.onDestroy();

System.gc();


}


}



----------------------------------------------------------------------------------------------------


프레임에니메이션 사용시 해당 리소스를 .recycle(); 로 해제시켜주라고 하던데 어떻게 해야 되는지 도통 알수가 없습니다.


onDestroy() 안에다가 recycleBitmap(imageView01); 라든가 ((BitmapDrawable)imageView01.getDrawable()).getBitmap().recycle();


라든가 몇가지 방법을 넣어봤는데 전혀 해결되지 않습니다.



이문제 하나로 3주째 골머리를 썩고있습니다 ㅠㅠ

선배님들이 보시기엔 간단한 문제겠지만 저같은 평민에겐 식음을 전폐할 정도의 큰 시련입니다 ㅎㅎㅎㅎ


따뜻한 구원의 손길을 기다려봅니다 ^^