검색 엄청나게 해보고 다 보고 해봤는데... 해결이 안되서 질문 남깁니다.



처음 이미지를 이런방식으로 로드합니다. 

 mainBitmap = Images.Media.getBitmap(getContentResolver(), uri);

(이렇게 바로 로드하면 메모리를 많이 사용하지 않는다는 블로그의 글을 보았습니다.)


그 후 바로 이미지를 리사이징합니다. (화면크기에 맞춰서)

 Bitmap.createScaledBitmap(mainBitmap, BoxSizeW, BoxSizeH, false);




그리고 특정 작업 후, 영역의 이미지를 잘라와야 합니다.


처리할 이미지가 매우 크기때문에 자를 이미지 크기에 따라 (최대 720, 1280) sampleSize값을 구하고,


이미지를 줄인상태에서 decodeFile합니다.


그 후 좌표값에 맞춰 이미지를 자르고 파일로 저장합니다. 


인텐트로 저장된 파일의 path를 넘겨주며 액티비티를 finish()시킵니다.


물론 onDestroy()에서 사용했던 비트맵변수와 이미지뷰에 대해서는 모두 recycle()시켜주었습니다.


if(mainBitmap!=null){	mainBitmap.recycle();mainBitmap = null;}if(imgView.getBackground() != null){	((BitmapDrawable)imgView.getBackground()).getBitmap().recycle();}System.gc(); 







아무튼, 액티비티가 finish된 후, 다시 이 액티비티로 오려고 할 경우 아웃오브메모리가 발생합니다.


무엇이 문제일까요? ㅠ 




흐름을 정리하자면 

메인액티비티 -> Image액티비티 -> 결과path로 반환하고finish() -> 메인액티비티,반환된 이미지 출력 -> 다시 Image 액티비티 호출시 

아웃 오브 메모리 발생




조언 부탁드립니다.