Android:应用程序终止后 SoundPool 不工作
Posted
技术标签:
【中文标题】Android:应用程序终止后 SoundPool 不工作【英文标题】:Android: SoundPool not working after App gets terminated 【发布时间】:2012-04-15 22:28:36 【问题描述】:我注意到一个奇怪的问题:我的应用使用 SoundPool 播放声音。当我在播放某些声音时使用返回键终止应用程序时,下次启动应用程序时 SoundPool 将无法正常工作(即使我启动另一个使用 SoundPool 的应用程序,声音也不工作,我必须重新启动设备让 SoundPool 再次工作)。
我找到了一个有帮助的解决方案:我必须在 onDestroy() 方法中停止所有播放声音,然后调用 SoundPool.release()。
问题是,当用户使用任务管理器杀死应用程序时,不会调用 onDestroy 并且我无法停止/释放声音。有人知道吗
a) 我如何检测到应用程序被杀死 b) 使用另一种机制来防止 SoundPool 在 App 终止后无法正常工作
在装有 android 2.3.6 的三星 Galaxy S Plus 上测试
【问题讨论】:
你可以在 onPause 中停下来,因为它会被调用 其实我确实在onPause()中停止了声音,但是我在onDestroy()中调用了SoundPool.release,否则我必须在onResume()中重新加载所有声音 【参考方案1】:SurfaceView
具有可覆盖的方法,例如 surfaceCreated
和 surfaceDestroyed
。此外,您应该调用soundPool.stop(streamId)
,而不是调用release
,其中streamId
是soundPool.play
方法返回的整数,如果您使用错误的streamId
,则循环声音不会停止。我在使用另一个我没有循环播放的声音的 streamId
时遇到了同样的问题。
【讨论】:
以上是关于Android:应用程序终止后 SoundPool 不工作的主要内容,如果未能解决你的问题,请参考以下文章
Android:如何混合 2 个音频文件并使用 soundPool 重现它们
为啥我的 SoundPool 声音第一次在 Android 上没有播放?