android音池堆大小溢出

问题描述 投票:6回答:3

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

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

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

android overflow soundpool
3个回答
12
投票

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

  1. 在MediaPlayer中播放长/大背景音乐。

0
投票

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


0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.