小编Fli*_*xer的帖子

Android MediaPlayer重置冻结UI

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被阻止 …

java android android-ui android-mediaplayer

9
推荐指数
1
解决办法
8313
查看次数

标签 统计

android ×1

android-mediaplayer ×1

android-ui ×1

java ×1