0

我注意到一个奇怪的问题:我的应用程序使用 SoundPool 播放声音。当我在播放某些声音时使用返回键终止应用程序时,下次启动应用程序时 SoundPool 将无法正常工作(即使我启动另一个使用 SoundPool 的应用程序,声音也不工作,我必须重新启动设备让 SoundPool 再次工作)。

我找到了一个有帮助的解决方案:我必须在 onDestroy() 方法中停止所有播放声音,然后调用 SoundPool.release()。

问题是,当用户使用任务管理器杀死应用程序时,不会调用 onDestroy 并且我无法停止/释放声音。有谁知道

a) 我如何检测到应用程序被杀死 b) 使用另一种机制来防止 SoundPool 在应用程序终止后无法工作

在装有 Android 2.3.6 的三星 Galaxy S Plus 上测试

4

1 回答 1

2

具有可覆盖的SurfaceView方法,例如surfaceCreatedsurfaceDestroyed。另外release,您应该调用 ,而不是调用soundPool.stop(streamId),其中streamId是该soundPool.play方法返回的整数,如果您使用错误的streamId循环声音不会停止。streamId我在使用另一个我没有循环的声音时遇到了同样的问题。

于 2012-06-19T20:48:27.580 回答