媒体播放器问题



我有一个媒体播放器,可以从主(启动器(活动开始播放音乐。我偶然发现了两个问题。

  1. 当我按下主页按钮或我的应用程序通常失去焦点时,音乐仍在播放。

  2. 当我返回到主(启动器(活动时,媒体播放器再次启动(创建新的媒体播放器(,结果是有两个媒体播放器同时播放同一个文件。

*对于第一个问题,我试图以onStop()方法停止音乐,但是当我从主要活动转到其他活动时,音乐停止了,这是我不想要的,onDestroy不起作用。

我的代码:

if (player == null) {
player = MediaPlayer.create(this, R.raw.music);
player.setLooping(true);
if (!player.isPlaying()) {
player.start();
}
}

P.S我希望音乐不仅在主要活动中播放,而且在其他活动中播放。

当您退出时,您的MediaPlayer未被正确停止。 每当活动停止时,都会调用onStop(),以便进入更高优先级的活动,或者被另一个活动"暂停"(在此处检查活动生命周期(。在您的onDestroy()方法中尝试此答案中的stopPlaying()方法。

对于第二个问题,您可以遵循以下两种方法之一:要么坚持使用我上面给你的答案中的stopPlaying()方法,停止MediaPlayer并将其设置为 null,要么在活动开始时检查MediaPlayer是否存在(尝试在MediaPlayer实例化之前检查这一点,否则MediaPlayer将始终存在(。

确保通过调用 player.release(( 并在 onDestroy(( 方法中取消 MediaPlayer 来释放您在销毁活动时创建的 MediaPlayer 资源。

@Override
protected void onPause() {
super.onPause();
if(player != null)
player.stop();
}
@Override
protected void onStop() {
super.onStop();
if(player != null)
player.stop();
}
@Override
protected void onDestroy() {
super.onDestroy();
if(player != null)
player.stop();
}

最新更新