MediaPlayer
更改dataSource
播放器时我的Android有问题.根据MediaPlayer
(http://developer.android.com/reference/android/media/MediaPlayer.html)的规范,我reset
在改变时需要玩家dataSource
.这样可以正常工作,但只要channelChanged
快速连续两次调用该方法,就会MediaPlayer.reset
冻结UI.我分析了这里看到的代码:
public void channelChanged(String streamingUrl)
{
long m1 = System.currentTimeMillis();
mMediaPlayer.reset();
long m2 = System.currentTimeMillis();
try
{
mMediaPlayer.setDataSource(streamingUrl);
}
catch (IOException e)
{
e.printStackTrace();
}
long m3 = System.currentTimeMillis();
mMediaPlayer.prepareAsync();
long m4 = System.currentTimeMillis();
Log.d("MEDIAPLAYER", "reset: " + (m2 - m1));
Log.d("MEDIAPLAYER", "setDataSource: " + (m3 - m2));
Log.d("MEDIAPLAYER", "preparing: " + (m4 - m3));
}
Run Code Online (Sandbox Code Playgroud)
重置:3
setDataSource:1
准备:0
重置:3119
setDataSource:2
准备:1
显然,第一次呼叫reset
被阻止 …