2010-02-22 4 views
4

여러 개의 짧은 사운드 클립이 포함 된 Android 앱을 만들고 있습니다. 현재 메뉴 활동으로 2 차 활동이 시작되면 SoundPool을 사용하여 사운드 클립을로드합니다. 내가 가지고있는 것 같은 문제는 일단이 보조 활동이 시작되면 사운드 클립을로드하면 여러 힙 크기 오버플로가 발생하고 활동이 실제로로드되면 (에뮬레이터가 오류 또는 강제 종료를 제공하지 않음) MediaPlayer을 사용하면이 힙 크기 오버플로가 발생하는 것을 방지 할 수 있습니까?사운드 클립의 힙 크기 오버 플로우 문제

또한 현재 메뉴 활동은 결과를 기다리는 두 번째 활동 (startActivityForResult() 기능 사용)을 시작합니다. 이것은 메뉴 활동이 메모리에 저장되고 두 번째 활동이 메모리에로드된다는 것을 의미합니까? 그렇다면 두 번째 메뉴가 시작되면 메뉴 작업에 finish()을 호출하여 메모리 문제를 해결할 수 있습니까? 사용자가 메뉴로 돌아가고 싶을 때 메뉴 작업을 다시 시작하거나 완전히 새로운 문제가 발생합니까?)?

+0

아마도 http://stackoverflow.com/questions/4119405/android-how-to-increase-heap-size-at-runtime/4631393#4631393과 다소 중복 되었습니까? – pjv

+0

Q가 중복 된 것처럼 보이지 않습니다. – stealthcopter

+1

다중 SoundPool 인스턴스를 사용하여 힙 크기 오류를 방지 할 수 있습니다. http://stackoverflow.com/a/15331311/1124084 – andyao

답변

5

예, 사운드 풀은 모든 사운드를 메모리에 유지합니다. 미디어 플레이어의 단일 인스턴스가 아마도 당신이 필요로하는 것일 것입니다 see here. 당신은 이것을해야하며 당신의 기억 문제는 극단적 인 조치를 취하지 않고 사라져야합니다.

+0

에서 자세한 내용을 확인할 수 있습니다. 안드로이드 오피스가 이것을 더 이상 외면하지 않는 것은 정말 불행한 일입니다. – MattD