我正在使用VideoView使用HLS播放远程视频 当视频是VOD(视频点播 - 只是一个远程视频文件,没有直播)时,一切正常。
当我尝试播放直播时出现问题 如果我在快速网络(wifi或3g / 4g)上,一切都按预期工作。
例如,如果我尝试通过边缘网络播放视频,则视频开始加载,这没关系。 但如果我点击后退按钮,整个应用程序就会冻结。奇怪的是,根本没有显示ANR对话框,冻结有时会持续20秒以上
这是代码
...
MediaController mediaController = new MediaController(this);
videoView.setMediaController(mediaController);
videoView.setVideoURI(Uri.parse(Utility.sanitizeUrl(videoUrl)));
videoView.setOnErrorListener(new MediaPlayer.OnErrorListener()
{
@Override
public boolean onError(MediaPlayer mp, int what, int extra)
{
tvError.setVisibility(View.VISIBLE);
videoView.setVisibility(View.GONE);
pbLoading.setVisibility(View.GONE);
return true;
}
});
//we also set an setOnPreparedListener in order to know when the video file is ready for playback
videoView.setOnPreparedListener(new MediaPlayer.OnPreparedListener()
{
public void onPrepared(MediaPlayer mediaPlayer)
{
// close the progress bar and play the video
pbLoading.setVisibility(View.GONE);
//if we have a position on savedInstanceState, the video playback should start from here
if(savedVideoPosition > 0)videoView.seekTo(savedVideoPosition);
if (savedVideoPosition == 0)
{
videoView.start();
}
else
{
//if we come from a resumed activity, video playback will be paused
videoView.pause();
}
}
});
...
@Override
protected void onDestroy()
{
super.onDestroy();
videoView.stopPlayback();
}
我唯一可以在日志中使用的是这个
07-09 10:00:57.665 10499-10499/{package_name_removed} I/Choreographer﹕ Skipped 9565 frames! The application may be doing too much work on its main thread.