Android MediaPlayer的生命週期

2021-07-25 08:54:32 字數 1528 閱讀 3259

mediaplayer的狀態轉換圖也表徵了它的生命週期,搞清楚這個圖可以幫助我們在使用mediaplayer時考慮情況更周全,寫出的**也更具健壯性。

這張狀態轉換圖清晰的描述了mediaplayer的各個狀態,也列舉了主要的方法的呼叫時序,每種方法只能在一些特定的狀態下使用,如果使用時mediaplayer的狀態不正確則會引發illegalstateexception異常。

idle

狀態:當使用new()方法建立乙個mediaplayer物件或者呼叫了其reset()方法時,該mediaplayer物件處於idle狀態。這兩種方法的乙個重要差別就是:如果在這個狀態下呼叫了getduration()等方法(相當於呼叫時機不正確),通過reset()方法進入idle狀態的話會觸發onerrorlistener.onerror(),並且mediaplayer會進入error狀態;如果是新建立的mediaplayer物件,則並不會觸發onerror(),也不會進入error狀態。

end

狀態:通過release()方法可以進入end狀態,只要mediaplayer物件不再被使用,就應當盡快將其通過release()方法釋放掉,以釋放相關的軟硬體元件資源,這其中有些資源是只有乙份的(相當於臨界資源)。如果mediaplayer物件進入了end狀態,則不會在進入任何其他狀態了。

initialized

狀態:prepared

狀態:preparing

狀態:這個狀態比較好理解,主要是和prepareasync()配合,如果非同步準備完成,會觸發onpreparedlistener.onprepared(),進而進入prepared狀態。

started

狀態:paused

狀態:stop

狀態:playbackcompleted

狀態:error

狀態:如果由於某種原因mediaplayer出現了錯誤,會觸發onerrorlistener.onerror()事件,此時mediaplayer即進入error狀態,及時捕捉並妥善處理這些錯誤是很重要的,可以幫助我們及時釋放相關的軟硬體資源,也可以改善使用者體驗。通過setonerrorlistener(android.media.mediaplayer.onerrorlistener)

可以設定該***。如果mediaplayer進入了error狀態,可以通過呼叫reset()來恢復,使得mediaplayer重新返回到idle狀態。

參考文件:androidsdk1.5官方文件:android-sdk-windows-1.5_r3/docs/reference/android/media/mediaplayer.html

Android MediaPlayer的生命週期

android mediaplayer的生命週期 mediaplayer 的狀態轉換圖也表徵了它的生命週期,搞清楚這個圖可以幫助我們在使用 mediaplayer 時考慮情況更周全,寫出的 也更具健壯性。這張狀態轉換圖清晰的描述了 mediaplayer 的各個狀態,也列舉了主要的方法的呼叫時序,每...

Android MediaPlayer的生命週期

android mediaplayer的生命週期 mediaplayer的狀態轉換圖也表徵了它的生命週期,搞清楚這個圖可以幫助我們在使用mediaplayer時考慮情況更周全,寫出的 也更具健壯性。這張狀態轉換圖清晰的描述了mediaplayer的各個狀態,也列舉了主要的方法的呼叫時序,每種方法只能...

uiviewcontroller的生命週期

uiviewcontroller是ios程式中的乙個重要組成部分,扮演者乙個大管家的身份,管理著程式中的眾多檢視 何時載入view,載入的原則是什麼,檢視何時消失等問題,文件中講的都很詳細。controller的view最好在需要顯示時再去載入,並且在系統發出記憶體警告時釋放不必要的view及相關的...