Android:应用程序终止后声音池不工作

Android:应用程序终止后声音池不工作,android,soundpool,Android,Soundpool,我注意到一个奇怪的问题:我的应用程序使用SoundPool来播放声音。当我在播放某些声音时使用back键终止应用程序时,下次启动应用程序时,SoundPool将无法正常工作(即使我启动了另一个使用SoundPool的应用程序,声音也无法工作,我必须重新启动设备才能使SoundPool再次工作) 我找到了一个解决方案:我必须停止onDestroy()方法中的所有播放声音,然后调用SoundPool.release() 问题是,当用户使用任务管理器终止应用程序时,onDestroy不会被调用,并且我

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

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

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

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


在装有Android 2.3.6的三星Galaxy S Plus上测试,
SurfaceView
具有可覆盖的方法,如
surfaceCreated
surfaceDestroyed
。另外,如果使用错误的
streamId
循环声音不会停止,则不应调用
release
,而应调用
soundPool.stop(streamId)
,其中
streamId
soundPool.play方法返回的整数。我在使用另一个我没有循环的声音的
streamId
时遇到了同样的问题。

您可能可以在onPause中停止,因为这将被调用。实际上,我在onPause()中停止声音,但在onDestroy()中调用SoundPool.release,否则我必须在onResume()中重新加载所有声音