2012-05-06 2 views
0

비트 맵에서 이미지의 크기를 조절하면 응용 프로그램이 종료됩니다.
그래서 나는 LogCat이라는 탭을 보았습니다.
그 이유는 메모리 오버 플로우입니다.
새로운 방법으로 만든 메모리를 해제하는 방법을 알지 못했습니다.
가비지 수집이 작동하지 않습니다. 여기이미지 스케일로 인해 메모리 오버플로 오류가 발생합니다.

Runtime.getRuntime().freeMemory(); 

matrix.reset(); 

curScale += 0.02f; 

h = orgImage.getHeight(); 

w = orgImage.getWidth(); 

matrix.postScale(curScale, curScale); 

rtnBitmap = Bitmap.createBitmap(orgImage, 0, 0, w, h, matrix, true); 

curImageView.setImageBitmap(rtnBitmap); 

calculate(-0.02f); 

문제가 rtnBitmap입니다 다음과 같이

코드입니다. 이것을 추가하는 것 외에도, 나는 심지어 함수 recycle()을 사용했습니다. 그러나 그것은 효과가 없었습니다.
귀하의 도움을 기다리고 있습니다.

감사합니다.

+0

이전 개체를 'null'로 참조하는 모든 변수를 설정하여 해제하려고 했습니까? –

+0

이미지 (비트 맵, 압축되지 않음)의 크기는 어느 정도입니까? 또한 어떤 장치를 실행하고 있으며 코드에서 상당한 양의 메모리를 차지하고있는 다른 것들이 있습니까? – snapfractalpop

+0

감사합니다. 이전 개체를 해제하는 방법? 나는 자바가 가비지 수집을 사용하여 알아. 따라서 릴리스 기능이 없습니다. image.recycle()을 사용했지만 결과는 같습니다. 축소하면 오류가 없습니다. 나는 while 루프에서 이것을 사용했다. 카운터가 3 이상이면 프로세스가 종료됩니다. image.createbitmap()을 사용하여 이미지 크기를 조절할 수있는 방법이 더 없습니까? 나는 내가 안드로이드에 대한 최신 사람이기 때문에 내가 사용합니다. – user1304842

답변

0

NULL이 아닌 경우 사용하기 전에 rtnBitmap.recycle();을 사용하십시오.

+0

감사합니다. 나는 그렇게하려고한다. 하지만 달리기도 마찬가지입니다. – user1304842

+0

실행 중일 때. 나는 이것을 "while"에서 사용한다. 카운터가 3 이상이면 프로세스가 종료됩니다. 이미지의 크기를 조정하는 다른 방법이 있습니까? Bitmap.createbitmap()을 사용하지 않습니까? – user1304842

+0

while 루프의 시작 부분에서이 코드를 사용하십시오. 너 그거 했니? – breceivemail

관련 문제