您好我正在开发Android应用程序,其中我有一个简单的活动,其中包含启动新活动的按钮。新活动包含显示视频的表面视图。 我知道准备媒体播放器在主线程上工作,这就是我使用prepareAsync的原因。所以我的问题是这样的。我点击活动状态按钮开始新活动并开始加载视频。如果我在视频开始之前点击返回,即媒体播放器启动(),它将返回上一个活动。但该活动的UI在一段时间内不活跃。这意味着我无法点击开始按钮一段时间。一段时间后,它再次变得活跃。有没有人面临同样的问题。我的代码如下:
@Override
public void surfaceCreated(SurfaceHolder arg0) {
// TODO Auto-generated method stub
Log.i("FFFFFFFFFFFFFFFFFFF ", "FFFFFFFFFFFFFFFFFFF ");
mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
mediaPlayer.setDisplay(surfaceHolder);
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
mediaPlayer.start();
}
});
}
如何避免这种情况。难道我做错了什么。需要帮忙。谢谢。
答案 0 :(得分:0)
这是在mediaplayer
或videoview
加载视频时遇到的常见问题。发生这种情况是因为媒体播放器正在初始化您的视频并准备播放。此延迟可能会导致延迟1-2
秒,具体取决于您的视频大小和硬件。
现在回答您的问题,您可以通过在单独的thread
中初始化媒体播放器来处理此问题,也可以使用async task
来处理它。如果您使用async
并且已经使用过它,则可以显示progress
可视化,供用户等待。这种方法甚至被android
中的大多数媒体播放器使用。
希望这会有所帮助。干杯:。)