2013-06-18 2 views
2

각 행에 버튼이있는 목록이 있습니다. 내 응용 프로그램의 단추는 사용자 지정 드로어 블 (각 약 0.5Kb png)과 함께 사용자 지정 테마를 사용합니다. 사용자가 주당 여러 번 나타나는 OutOfMemory 오류를 신고합니다.버튼 배경에 의한 OutOfMemory

첫 번째 아이디어는 Buttons가 BitmapDrawables를로드하고 리사이클링하지 않는다는 것입니다. 따라서 네이티브 메모리를 초과하게됩니다. 테스트를 위해 300Kb (jpgs) 정도 큰 이미지로 드로어 블을 변경했습니다. 는 다른 장치 안드로이드 내가 본 어떤 버전 2.1-2.3.x

에서 테스트 : 비트 맵로드의

  1. 하나 개의 인스턴스와 각 버튼에 사용. 네이티브 이미지 ID는 각 비트 맵에 대해 동일합니다.
  2. 기기 목록을 회전하면 다시 그려지고 기본 이미지 ID가 변경됩니다.
  3. 화면이 여러 번 회전 한 후 OutOfMemmoryError가 발생했습니다!

따라서 "아무도 단추의 배경에 대해 재활용하지 않음"이라고합니다.

재활용을 확인하려면 onPause 메서드에서 문제를 해결하는 데 도움이되는지 확인하려면 배경에 사용되는 Bitmap을 검색하고 직접 재활용하십시오. OutOfMemory가 더 이상 발생하지 않습니다.

Views에서 사용한 각 드로어 블을 재활용하는 작업이 나를 놀라게합니다. 나는 안드로이드가 그런 종류의 이슈를 가지고 있다고 믿을 수 없다!

각 드로어 블에 대한 재활용을 쉽게 호출 할 수있는 솔루션이 있습니까?

+3

큰 비트 맵을 효율적으로로드하는 방법에 대해 문서를 참조하십시오. http://developer.android.com/training/displaying-bitmaps/load-bitmap.html – Houcine

+1

[메모리 누수 방지] (http : //android-developers.blogspot.in/2009/01/avoiding-memory-leaks.html) – Rajesh

+0

Thx하지만 이미 그 페이지를 읽었습니다. 어떤 종류의 문제가 있습니다. 나는 자원을 직접로드하지 않는다. 나는 Buttons, EditText, CehkcBoxes 등과 같은 뷰를 위해 Custom Drawalbes와 함께 Themes를 사용합니다 ... –

답변

-1

최상의 해결 방법은 가능한 경우 버튼 용 드로어 블 사용을 피하는 것입니다.