본문 바로가기

정보기술, IT/IT source

android OutOfMemory Error 해결!!

반응형

onCreate() 함수 안에 아래 소스추가.


RelativeLayout layout = (RelativeLayout)findViewById(R.id.cg); // 레이아웃 형태는 사용하는 레이아웃으로 바꿔쓰면 된다. cg는 레이아웃에 선언한 아이디이다.


layout.setBackground(new BitmapDrawable(getResources(), BitmapFactory.decodeResource(getResources(), R.drawable.bg_gamepad_0031))); // 해당 레이아웃의 배경 이미지를 그리는데 그릴 이미지를 불러오면 된다.


아래와 같이 소스를 추가.


개발하는 환경에 따라 onStop() 함수는 onDestroy()나 onPause()함수를 적절히 사용해 준다.


@Override

public void onStop() {

 super.onStop();

    recycleView(findViewById(R.id.io));

}

    


@SuppressLint("NewApi")

private void recycleView(View view) {

if(view != null) {

Drawable bg = view.getBackground();

if(bg != null) {

bg.setCallback(null);

((BitmapDrawable)bg).getBitmap().recycle();

view.setBackground(null);

}

}

 }


반드시 위와 같이 new로 복사본을 새로 생성해서 사용해야 메모리도 적게 먹고 recycle도 할수 있어서 OutOfMemoryError를 예방할 수 있다고 한다.





반응형