안드로이드 개발 질문/답변
(글 수 45,052)
비트맵을 사용할시 VM Budget 에러가 많이 발생하곤 하였습니다.
그런데 아래 1번과 같이 "1000"개의 이미지를 불러올때는 메모리 에러가 발생하지 않는데요...
2번과 같이 불러오면서 스케일을 하면 메모리 부족 현상이 뜨더라고요...
<1 번>
bm = ((BitmapDrawable)context.getResources().getDrawable(R.drawable.default_icon)).getBitmap();
<2번>
bm = Bitmap.createScaledBitmap(((BitmapDrawable)context.getResources().getDrawable(R.drawable.default_icon)).getBitmap(), 100, 100, true);
원인이 무엇일까요?
리소스를 그대로 쓰지 않고 스케일링이나 다른 작업을한 비트맵을 사용하면 메모리 에러가 나는건가요?
그렇다면 매트릭스를 이용해서 반전시킨 이미지도 사용할수 없을텐데...
(물론 몇개의 이미지만 사용할시는 스케일링을 하여도 메모리 부족현상이 뜨지 않습니다. 한... 1000, 2000개 돌렸을때 에러가 나오고 있습니다.)
고수님들의 조언을 부탁드립니다.
감사합니다.




1. Bitmap.Option 을 사용하세요
2. 옵션을 사용하면 이미지를 2번 생성할 필요 없이 1번 생성으로 해결 할 수 있습니다.
3. 이미지 1000개를 전부 한번에 보여줄 일은 없지요. 화면에 보이지 않는 이미지는 recycle 로 해서 해제시켜주는 작업을 해주세요
필요한 소스들은 구글링과 스택오버플로우에 잘 나와있습니다.