2012-04-26 2 views
0

나는 보드 게임을 Android로 이식하고 있습니다. 보드 자체는 1000x1000 비트 맵으로, png 형식으로 약 250k 걸립니다. 는 그것은 코드의 이러한 비트와 함께, 작은 화면 장치에서 사용자를 위해, 확대 및 드래그 할 수 있습니다 : 당신은 지금까지 내가 내 1000x1000 비트 맵을로드하는 데 사용하는 회원 mBoardBitmap을 가지고 있음을 알비트 맵 및 메모리 문제, 방법?

Bitmap scaledBitmap = Bitmap.createBitmap(mBoardBitmap, left, top, width, width, matrix, true); 
board.setBackgroundDrawable(new BitmapDrawable(getResources(), scaledBitmap)); 

에서 onCreate(). 사용자가 이동하거나 확대 할 때 반복해서로드하는 것보다 한 번로드하는 것이 옳은 것처럼 보였습니다. 보드에 레이어를 추가해야하므로 레이어 당 비트 맵에 대해 질문하기 시작했습니다.

내가 실수로하지 않는 한 여러 개의 1000x1000 비트 맵 (메모리를 1 메가 바이트)을로드하고 유지해야합니까? 아니면 사용자가 보드를 터치 할 때마다 다시로드해야합니까?

둘째, 각 MotionEvent.ACTION_MOVE에서 이전 두 줄의 코드로 보드가 다시 그려집니다.이 scaledBitmap과 새로운 BitmapDrawable은 어떻게됩니까? 나는 메모리 충돌을 한 번도 경험하지 못했지만 어떻게 재활용/쓰레기 수거를하는지 확인합니까?

감사합니다.

+1

사실 픽셀 당 3 또는 4 바이트를 사용하기 때문에 1000x1000 비트 맵의 ​​경우 3 또는 4MB가됩니다 (ALPHA_8을 사용하여로드하지 않는 한 1 바이트). – Jave

답변