Android使用SurfaceView和Android媒体播放器播放视频会导致阻止UI

时间:2014-02-20 06:26:26

标签: android media-player surfaceview

您好我正在开发Android应用程序,其中我想使用URI作为源播放视频。所以我的问题场景是这样的,我有2个活动。从一项活动我开始另一项活动,我正在播放我的视频。所以当我开始我的视频播放器活动时问题是这样的,如果我在准备之前点击回来执行它将关闭玩家活动,但我之前的活动没有响应。我查看我的日志记录表明虽然它关闭了我的玩家活动;它没有经历毁灭。一段时间后它会执行ondestroy。一旦在玩家活动的销毁被执行,那么只有我的活动变得响应。所以我的两个活动生命周期日志看起来像

inside on pause of activity A
inside on create of player activity
inside on surface change 
inside on destroy of of activity A
inside on create of activity A
inside on resume of activity A
inside on stop of player activity     // delay occured here ...
inside on destroy of player activity  // delay occured here ... 

我的播放器代码如下:

private class PeparePlayer extends AsyncTask<Void, Void, Void> 
{    
    @Override
    protected Void doInBackground(Void... params) {
         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
                Log.i("MJKMJKMJKMJKMJKMJKMJKMJK", "MJKMJKMJKMJKMJKMJKMJKMJK inside on prepare listener ");
                mediaPlayer.start();
            }
            });
        return null;
    }

@Override
protected void onPreExecute() {}

@Override
protected void onProgressUpdate(Void... values) {}
}

一旦它在准备时执行,然后我点击返回然后它工作正常。但是如果我在onprepare完成之前点击它会导致这个UI阻塞问题。难道我做错了什么?需要一些帮助。谢谢。

0 个答案:

没有答案