마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

안드로이드 Java.lang.OutOfMemory 에러(수정)

0 추천
private void draw_zoom() {
if (MainActivity.ZOOM_LEVEL == 0) {
tempBitmap = BitmapFactory.decodeResource(res, R.drawable.img10x10);
img = Bitmap.createScaledBitmap(tempBitmap, 1200, 1200, true);
} else if (MainActivity.ZOOM_LEVEL == 1) { 
tempBitmap = BitmapFactory.decodeResource(res, R.drawable.img20x20);
img = Bitmap.createScaledBitmap(tempBitmap, 1200, 1200, true);
} else if (MainActivity.ZOOM_LEVEL == 2) { 
tempBitmap = BitmapFactory.decodeResource(res, R.drawable.img30x30);
img = Bitmap.createScaledBitmap(tempBitmap, 1200, 1200, true);
} else if (MainActivity.ZOOM_LEVEL == 3) {
tempBitmap = BitmapFactory.decodeResource(res, R.drawable.img40x40);
img = Bitmap.createScaledBitmap(tempBitmap, 1200, 1200, true);
} else if (MainActivity.ZOOM_LEVEL == 4) {
tempBitmap = BitmapFactory.decodeResource(res, R.drawable.img50x50);
img = Bitmap.createScaledBitmap(tempBitmap, 1200, 1200, true);
}
doDraw(canvas);
}
 
줌버튼을 이용해 배경이미지를 바꾸는 소스코드입니다.
 
실행을하면 실행 되거나, 바로 에러가 발생해 죽거나 합니다.
 
한번 눌렀을때 실행이 되더라도 그다음 누르면 거의 무조건 프로그램이 죽습니다.
 
Java.lang.OutOfMemory 라는 익셉션이 발생하면서 죽는데
 
해결방법좀 알려주세요
 
다음은 에러메시지입니다.
 
 
한번 실행 이후 한참 기다렸다가 다시 실행하면 죽지는 않으나 그 간격이 좁다싶으면 여지없이 죽어버리네요
음무 (17,820 포인트) 님이 2013년 12월 10일 질문
음무님이 2013년 12월 10일 수정

1개의 답변

0 추천
 
채택된 답변

자답입니다.

 

img.recycle();
tempBitmap = null;
 
이전 비트맵 자원을 해지해줌으로써 해결했습니다.
음무 (17,820 포인트) 님이 2013년 12월 10일 답변
...