2011-01-20 6 views
0

일부 Android 기기에서 내 앱이 제대로 실행되고 있지만 일부 기기에서는 메모리 부족 오류가 발생합니다. 어떤이 활동하는 일은 부하 비트 맵이며, onDraw()을 통해 그 비트 맵을 표시이상한 "메모리 부족"오류

http://logcat.miui-dev.com/147001

: 여기

는 로그 캣 로그입니다.

이 오류의 원인은 무엇입니까?

무엇을하고 있습니까?

단지 방법 이미지

_bitmapCache.put (R.drawable.gb2, BitmapFactory.decodeResource ( 의 GetResources() R.drawable.gb2))의 사진을 maping

암;

및 생성자가 호출 될 때 이미지를 사용하는 동안 방법 그냥 사용하는 호출

canvas.drawBitmap (_bitmapCache.get (R.drawable.level1c1), 0, 0, NULL);

이미지는 18 메가 이미지를 요청하는 것 같습니다

+0

검색하셨습니까? http://stackoverflow.com/search?q=Strange+%E2%80%9COut+of+Memory%E2%80%9D+Error+android –

+0

예, 문제가 해결되지 않았습니다. – nicky

답변

1

을 밥통합니다. 이미지 크기를 축소해야합니다. 각 응용 프로그램은 16-24megs의 힙 공간 만 허용됩니다. 추가 제안을하려면 코드를 더 많이보아야하지만 18 메가의 이미지는 너무 커서 ImageView는 자동으로 이미지 크기를 조정하지 않습니다. 따라서 일반적으로 이미지를 표시하기 전에 크기를 조정해야합니다. 내 경험으로.

+0

자체 코드를 게시했습니다. – nicky

+0

모든 비트 맵을 드로어 블에로드하고이를 코드의 해시 맵에 저장하고 있습니까? –

1

비트 맵의 ​​축소 버전을 직접로드 할 수 있도록 BitmapFactory의 옵션에 inSampleSize을 지정해야합니다.

+0

시도했는데, didnt는 – nicky

+0

을 처리했습니다. 그러나 큰 그림을 다루는 것은 간단한 문제가 아닙니다. 내 앱 EmailAlbum에서이 http://code.google.com/p/emailalbum/source/browse/EmailAlbumAndroid/tags/REL-2_10_2/src/com/kg/emailalbum/mobile/util/BitmapLoader를 구현해야했습니다. java를 사용하여 축소 된 버전으로 사진을로드하고 캐시합니다. –

관련 문제