안녕하세요.

 

바이트 데이터를 가지고 와서 이미지화하는 작업을 하고 있습니다.

 

이미지 사이즈는 400x400 정도밖에 안되는 작은 이미지 입니다.

 

한 화면을 구성할 때

 

Bitmap bm = BitmapFactory.decodeByteArray(Variable.itemInfo.get(index).stQuestion.image, 0, Variable.itemInfo.get(index).stQuestion.image.length);
img.setBackgroundDrawable(new BitmapDrawable(bm));

 

 

이런식으로 구현을 하였고

 

Prev, Next 버튼을 누를 때마다 화면을 구성을 하며 위 코드를 실행합니다.

 

Bitmap Options를 사용하지 않고 Prev, Next버튼을 자주 이동하다보면

 

넥서스원에서 Out of Memory Error가 발생합니다.

 

겔럭시시리즈에서는 발생하지 않구요.

 

 

여러 자료를 찾아보니 decodeByteArray를 실행하면 메모리 릭이 발생해서 그런거라고 해서

 

Bitmap 변수를 Static으로 하여

 

bm = BitmapFactory.decodeByteArray(Variable.itemInfo.get(index).stQuestion.image, 0, Variable.itemInfo.get(index).stQuestion.image.length);

img.setBackgroundDrawable(new BitmapDrawable(bm));

 

이런식으로 코드를 짜봐도 똑같이 문제가 발생하였습니다.

 

Options값을 줘서 로드 이미지를 1/2로 줄이면 Out of Memory Error가 아예 발생하지 않는건 아니지만

 

99%는 줄어버립니다. 하지만 최초 이미지가 400x400 이라 이미지가 흐릿하게 보여지게 됩니다.

 

이 문제를 어떻게 해결해야 할지 모르겠습니다.

 

안쓰는 Bitmap은 Recycle도 해보고 Static변수로도 지정해서 써보고 옵션값을 줘서 로드데이터를 줄여도 봤지만

 

여전히 문제가 남아있네요.