2011-11-16 25 views
-1

在爲RandomMusicPlayer示例代碼,reset()release()前右稱爲:發佈前需要在MediaPlayer上調用重置嗎?

// stop and release the Media Player, if it's available 
if (releaseMediaPlayer && mPlayer != null) { 
    mPlayer.reset(); 
    mPlayer.release(); 
    mPlayer = null; 
} 

這真的有必要? release不應該照顧所有可能需要的東西reset

回答

0

該版本不應該處理所有可能需要重置的內容嗎?

那麼,MediaPlayer可能會非常棘手。您需要了解MediaPlayer可以處於的狀態以及這些不同狀態中允許的呼叫。狀態圖和有效/無效狀態的位置 - http://developer.android.com/reference/android/media/MediaPlayer.html#StateDiagram

的代碼示例,你所提供的呼叫reset()的原因僅僅是取消初始化的對象mediaPlayer正確清潔的一切了防禦措施。嚴格地說,如果你只是打電話給release(),一切都應該沒問題,但我對此並不十分確定。

3

根據文檔,可以隨時執行release()。沒有必要先撥打reset(),之後也不需要將播放器設置爲null(GC應該在適當的時間處理掉)。

從文檔:

發佈後(),對象不再可用。

這就是說,我遇到了MediaPlayer及其文檔的一些問題。這是一個非常複雜的工作對象,並且有時候往往是一個小錯誤,特別是在拋出一個錯誤之後(沒有任何可以找到的錯誤代碼的解釋!)

+0

大聲笑,這就是低估它。 – StackOverflowed

相關問題