android音池堆大小溢出

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了android音池堆大小溢出相关的知识,希望对你有一定的参考价值。

我在Debug中运行时收到数百次此错误,它似乎不影响程序,但是如何消除它呢?

我知道它可以根据其他文章追溯到SoundPool

09-15 09:03:09.190:错误/ AudioCache(34):堆大小溢出!需求大小:1052672,最大大小:1048576

答案

SoundPool是硬编码,用于所有加载文件的缓冲区大小为1M。因此,当您将太多文件加载到SoundPool中时,您可能会收到“堆大小溢出”错误。我在将游戏声音FX加载到SoundPool的游戏项目中也遇到了这个问题,解决方案如下:

  1. 在MediaPlayer中播放长/大背景音乐。
另一答案

也许您的媒体资源太大,无法播放Soundpool。声音池仅播放简短的声音效果。在Soundpool API上,没有关于用于播放声音池的最大资源的规范,但是,如果您使用它,则只能播放短暂的声音效果,例如射击游戏中的短暂爆炸。如果这是您的问题,则应使用MediaPlayer播放声音。

另一答案

此错误不可能与堆大小有关,因为没有任何设备具有如此小的堆1052672〜1Mb。,但约为SoundPool缓冲区大小。SoundPool在内存中的原始PCM_16数据具有1Mb的硬编码限制。此限制适用于您正在加载到内存中的每种声音,不适用于每SoundPool个声音的总和。因此,关于SoundPools的投票最多的答案是非常错误的!

以上是关于android音池堆大小溢出的主要内容,如果未能解决你的问题,请参考以下文章

Android 音池计时

如何使音池静音?

Android中的内存泄漏和内存溢出

Android中的内存泄漏和内存溢出

Android中的内存泄漏和内存溢出

增加音池持续时间