2012-04-15 52 views
0

我注意到一個奇怪的問題:我的應用程序使用SoundPool播放聲音。當我使用後退鍵在播放某些聲音時終止應用程序時,下次啓動應用程序時SoundPool將無法正常工作(即使我啓動了另一個使用SoundPool的應用程序,但聲音不起作用,我必須重新啓動設備讓SoundPool再次運作)。Android:SoundPool在應用程序終止後無法工作

我發現了一個解決方案,可以幫助:我必須停止onDestroy()方法中的所有播放聲音,然後調用SoundPool.release()。

問題是,當用戶使用任務管理器殺死應用程序時,onDestroy不會被調用,我無法停止/釋放聲音。有誰知道

一)我怎麼能檢測到應用程序被殺害的 B)使用另一種機制來防止的Soundpool從的應用

在測試了三星Galaxy S的升級了Android 2.3終止後不工作。 6

+1

你可能會停止onPause因爲這將被稱爲 – zapl 2012-04-15 22:43:30

+0

實際上,我確實停止onPause()中的聲音,但我調用onDestroy()中的SoundPool.release,否則我將不得不重新加載onResume中的所有聲音( ) – osiris81 2012-04-15 22:47:45

回答

2

SurfaceView具有可覆蓋的方法,如surfaceCreatedsurfaceDestroyed。而不是調用release,如果使用錯誤的streamId循環聲音不會停止,您應該調用soundPool.stop(streamId),其中streamId是由soundPool.play方法返回的整數。我遇到了同樣的問題,即使用另一個聲音,我沒有循環播放。

相關問題