您好我正在开发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阻塞问题。难道我做错了什么?需要一些帮助。谢谢。