Проблемы переполнения кучи со звуковыми клипами

Я создаю приложение для Android, которое включает несколько коротких звуковых клипов. На данный момент я использую SoundPool для загрузки своих звуковых клипов после того, как действие меню запустит второе действие. Проблема, с которой я столкнулся, заключается в том, что как только начинается это вторичное действие, загрузка звуковых клипов вызывает множественное переполнение кучи, а затем через некоторое время действие фактически загружается (эмулятор никогда не выдает ошибку или принудительный выход). Поможет ли мне здесь использование MediaPlayer и предотвратит ли это переполнение размера кучи?

Также в данный момент активность меню запускает 2-ю активность в ожидании результата (используя функцию startActivityForResult()). Означает ли это, что действие меню хранится в памяти, а также загружает в память второе действие? Если да, могу ли я помочь своим проблемам с памятью, вызвав finish() в активности меню после запуска второй (затем перезапустив активность меню, когда пользователь хочет вернуться в меню, или это вызовет целый новый набор проблем? )?


person Fizz    schedule 22.02.2010    source источник
comment
Возможно, несколько копий stackoverflow.com/questions/4119405/ ?   -  person pjv    schedule 08.01.2011
comment
Совсем не похоже на дубликат этого Q   -  person stealthcopter    schedule 28.01.2011
comment
Вы можете использовать несколько экземпляров SoundPool, чтобы предотвратить ошибку размера кучи. Более подробную информацию можно найти на stackoverflow.com/a/15331311/1124084.   -  person andyao    schedule 11.03.2013


Ответы (1)


Да, саундпул сохранит все звуки в памяти. Один экземпляр медиаплеера, вероятно, будет всем, что вам нужно см. здесь. Вы должны сделать это, и ваши проблемы с памятью должны исчезнуть, не прибегая к каким-либо крайним мерам.

person stealthcopter    schedule 28.01.2011
comment
Спасибо. Очень жаль, что документы Android не раскрывают это больше. - person MattD; 19.09.2013