2012-11-01 83 views
0

我在Android應用程序類中創建了一個SoungMagager類,所以我可以使用它來管理整個應用程序的聲音。在SoundManager中,我有一個SoundPool和一個MediaPlayer分別播放一些較短和較長的聲音。在發佈後沒有聲音()mediaplayer

爲了「清理」我,我把方法釋放()SoundPool和MediaPlayer在onDestroy()方法,並調用finish()退出應用程序。

我的問題是,如果我這樣做完()並立即回來的應用程序,我沒有更多的聲音。沒有soundpool或mediaplayer。

如果我只是按下「主頁」硬件按鈕退出,並再次回到應用程序,就會有聲音。

如果我完成(),然後去系統應用程序管理和強制關閉應用程序,然後再次運行應用程序,有聲音。

如果我使用System.exit(0)而不是finish(),那麼每件事情都很好,但我被告知不要那樣做。

我懷疑這是因爲Application類的東西,但我不確定。我應該如何解決這個問題?有什麼建議麼?

回答

0

我想你把soundpool和你所要完成(),所以obvioulsy時被銷燬活動的實例變量被釋放(我的意思是刪除)活動mediaplayer對象,所以你需要分配聲音soundManager類的soundpool不會被銷燬。我認爲你明白了我的觀點。

public class SoundManager { 

    public static SoundPool mSoundPool; 
    public static MediaPlayer mMediaPlayer; 
     ..... 
     .... 
} 

現在烏爾活動中,您正在使用的Soundpool對象做到這一點: -

class <your activity> extend Activity{ 
     @Override 
    public void onCreate(Bundle savedInstanceState) { 
      SoundManager.mSoundPool = <assign your audio>; 
      SoundManager.mMediaPlayer = <assign>; 
     } 
} 
+0

對不起。我可以猜出你的意思,但這並沒有多大幫助。 –

+0

所以在這個改變後發生了什麼告訴我 –

+0

我把SoundManager放在Application類中,所以它只需要加載一次。 –