Android MediaPlayer的生命週期

2021-06-18 13:24:22 字數 1476 閱讀 2141

android mediaplayer的生命週期

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

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

idle 狀態:

進入idle狀態的方式有以下兩種:

1) 使用 new() 方法建立乙個 mediaplayer 物件;

2) 呼叫了其 reset() 方法;

這兩種方法的乙個重要差別就是:如果在這個狀態下呼叫了 getduration() 等方法(相當於呼叫時機不正確),引發的後果不同,如下

1)通過 reset() 方法進入 idle 狀態的話會觸發 onerrorlistener.onerror() ,並且 mediaplayer 會進入 error 狀態;

2)如果是新建立的 mediaplayer 物件,則並不會觸發 onerror(), 也不會進入 error 狀態。

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

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

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

Android MediaPlayer的生命週期

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

Android MediaPlayer的生命週期

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

uiviewcontroller的生命週期

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