2013-05-01 3 views
1

최근 학습 경험으로 안드로이드 용 뮤직 플레이어에서 작업 해 왔습니다. 잘 따라 가고 있지만 한 가지 문제가 있습니다. 음악 플레이어 활동에서 비트 맵으로 재생되는 노래의 내장 앨범 표지를 얻습니다. 그런 다음이 비트 맵을 ImageView로 설정합니다. 이것은 잘 작동하지만 약 10 개의 다른 노래를 시작한 후에 OutOfMemoryException이 발생합니다. 왜냐하면 새로운 노래를 시작할 때마다 onStop()이 이전 활동 (오른쪽?)에서 호출되었고 onStop에서 비트 맵 (나는 onDestroy()를 시도했지만 그게 도움이되지 않았다). 또한 새 노래가 재생되기 시작하면 미디어 플레이어가 재설정되므로 문제가되지 않아야합니다. OutOfMemoryException이 발생하는 이유에 대한 제안이 있습니까?비트 맵 메모리 관리

+0

이미지보기에 표시되는 이미지 또는 전체 크기 이미지의 축소판을 표시하고 있습니까? –

답변

1

onResume()에서 이미지를로드하고 onPause()에서 이미지를 재사용 할 수 있습니다. 또한 메모리에 버전을 축소 효율적으로

http://developer.android.com/training/displaying-bitmaps/load-bitmap.html

비트 맵을로드 주제로드 아래 링크를 확인해야합니다.

확인 메모리 관리

http://www.youtube.com/watch?v=_CruQY55HOk에 대한 링크에서 비디오.

메모리 누수의 원인을 찾으려면 위의 링크와 같이 MAT 분석기를 사용하십시오.

OutOfMemoryException은 앱의 힙에 메모리가 충분하지 않은 경우 발생합니다.

onCreate()는 액티비티 수명주기 동안 한 번 호출됩니다. 액티비티가 삭제되고 onCreate()가 호출되지 않으면 다시 액티비티를 시작하지 않는 한입니다.

+1

좋은 자료! 또한 해당 링크 옆에 http://developer.android.com/training/displaying-bitmaps/manage-memory.html을 시도해보십시오. 더구나, * 당신이 너 자신에게 recycle()를 부를 필요가있는 상황으로 당신 자신을 스누핑하는 것이 얼마나 쉬운지를 강조 할 수 없다. – Tom

+0

주목할만한 @Tom point on recycle(). – Raghunandan