码迷,mamicode.com
首页 > 其他好文 > 详细

SoundPool在实际应用中可能会遇到的一些奇葩的问题

时间:2014-09-04 19:10:20      阅读:187      评论:0      收藏:0      [点我收藏+]

标签:android   内存   soundpool   

SoundPool在实际应用中可能会遇到的一些奇葩的问题:

1、AudioFlingercould not  create track, status:-12 

        SoundPool在创建的maxStream这个参数代表能够同时播放的最大音效数,这里切忌合理使用,写的太大后会报AudioFlingercould not  create track, status: -12。。。。一旦报了这个错,你就听不到声音了,呵呵。

 2、256个音效

      当调用load方法的时候实际就是把音效加载到了SoundPool中,此时返回的streamId其实就是该音效在SoundPool中的Id,这个ID从0还是1来着(有点记不清了)递增,不过要注意的是,不要超过  256 这个临界点。也就是说第257个声音加载进去后,调用play方法其实是播不出来的,说不定还会挤掉一些前面加载好的声音。这个256的限制通过查看SDK源码基本就能了解清楚,它底层就那么实现的,用一个类似堆栈来存。

  3、unload方法和release方法

       如果你音效多,也不要指望unload方法来清除掉一些音效后再load新的进去,虽然unload后音效卸载了,但是前面分给它在SoundPool里面的Id可没有释放掉,也就是说这个时候你load新的进去只会在后面继续累加,然后累加多了就超过256了,然后就就听不到声音,然后就没有然后了。要想彻底清掉前面的音效请使用release方法,它会连内存中占用的资源一起释放掉。
     
       其他,load需要一点点时间,load后不要马上unload,load---play--unload的做法并不可取,不要load太大的音效,它只会申请1M的内存空间。SoundPool出错后通常会看到retuen的值是0。

SoundPool在实际应用中可能会遇到的一些奇葩的问题

标签:android   内存   soundpool   

原文地址:http://blog.csdn.net/wemisa/article/details/39055521

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!