android音池堆大小溢出
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了android音池堆大小溢出相关的知识,希望对你有一定的参考价值。
我在Debug中运行时收到数百次此错误,它似乎不影响程序,但是如何消除它呢?
我知道它可以根据其他文章追溯到SoundPool
09-15 09:03:09.190:错误/ AudioCache(34):堆大小溢出!需求大小:1052672,最大大小:1048576
答案
SoundPool是硬编码,用于所有加载文件的缓冲区大小为1M。因此,当您将太多文件加载到SoundPool中时,您可能会收到“堆大小溢出”错误。我在将游戏声音FX加载到SoundPool的游戏项目中也遇到了这个问题,解决方案如下:
- 在MediaPlayer中播放长/大背景音乐。
另一答案
也许您的媒体资源太大,无法播放Soundpool。声音池仅播放简短的声音效果。在Soundpool API上,没有关于用于播放声音池的最大资源的规范,但是,如果您使用它,则只能播放短暂的声音效果,例如射击游戏中的短暂爆炸。如果这是您的问题,则应使用MediaPlayer播放声音。
另一答案
此错误不可能与堆大小有关,因为没有任何设备具有如此小的堆1052672〜1Mb。,但约为SoundPool
缓冲区大小。SoundPool
在内存中的原始PCM_16
数据具有1Mb的硬编码限制。此限制适用于您正在加载到内存中的每种声音,不适用于每SoundPool
个声音的总和。因此,关于SoundPools
的投票最多的答案是非常错误的!
以上是关于android音池堆大小溢出的主要内容,如果未能解决你的问题,请参考以下文章