嗨我正在開發android應用程序,其中我有一個簡單的活動,其中包含按鈕來啓動新的活動。新活動包含表面視圖以顯示視頻。 我知道準備媒體播放器在主線程上工作,這就是爲什麼我使用prepareAsync。所以我的問題就是這樣。我點擊活動狀態按鈕,開始新的活動並開始加載視頻。如果我在視頻開始前點擊回來,即媒體播放器開始(),它會回到上一個活動。但是該活動的UI在一段時間內不活躍。這意味着我無法點擊開始按鈕一段時間。過了一段時間後,它再次活躍起來。有沒有人面臨同樣的問題。我的代碼如下所示:Android準備媒體播放器導致UI阻止
@Override
public void surfaceCreated(SurfaceHolder arg0) {
// TODO Auto-generated method stub
Log.i("FFFFFFFFFFFFFFFFFFF ", "FFFFFFFFFFFFFFFFFFF ");
mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
mediaPlayer.setDisplay(surfaceHolder);
try {
mediaPlayer.setDataSource(getApplicationContext(), targetUri);
mediaPlayer.prepareAsync();
//mediaPlayer.prepare();
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (IllegalStateException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
mediaPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
@Override
public void onPrepared(MediaPlayer mp) {
// TODO Auto-generated method stub
mediaPlayer.start();
}
});
}
如何避免這種情況。難道我做錯了什麼。需要幫忙。謝謝。
您是否嘗試過在onBackPressed中調用mediaPlayer.release()? – Niko
是的,我在做onDestroy內的mediaPlayer.release()。也做mediaPlayer = null.But仍然是相同的結果。 – nilkash
http://stackoverflow.com/questions/7445145/mediaplayer-prepare-problem可能的重複? – palsch