Android 即使在MediaPlayer.pause()之后,MediaPlayer仍在后台继续播放;

Android 即使在MediaPlayer.pause()之后,MediaPlayer仍在后台继续播放;,android,android-fragments,android-mediaplayer,audio-streaming,Android,Android Fragments,Android Mediaplayer,Audio Streaming,我与MediaPlayer合作。我想制作一台在线流媒体广播。现在我有了这个mediaPlayer对象(mediaPlayer的),比如在片段1中,当我在片段1上时,它播放得很好,当我转到片段2时,它仍在播放,但问题是当我再次回到片段1时,当按下图像按钮时,我试图停止它 if(mediaPlayer != null && mediaPlayer.isPlaying()) { mediaPlayer.pause(); } 但它不会停止并继续在后台播放,当我单击播放该音频时,

我与MediaPlayer合作。我想制作一台在线流媒体广播。现在我有了这个mediaPlayer对象(mediaPlayer的),比如在片段1中,当我在片段1上时,它播放得很好,当我转到片段2时,它仍在播放,但问题是当我再次回到片段1时,当按下图像按钮时,我试图停止它

if(mediaPlayer != null && mediaPlayer.isPlaying()) {
    mediaPlayer.pause();
}
但它不会停止并继续在后台播放,当我单击播放该音频时,我会听到两个音频,即新的和前一个在后台播放

我也用过

if(mediaPlayer != null && mediaPlayer.isPlaying()) {
    mediaPlayer.stop();
    mediaPlayer.release();
    mediaPlayer = null;
}

这也不起作用。

尝试在单击时添加额外的检查

if(mediaPlayer.isPlaying()) {
    mediaPlayer.stop();
    mediaPlayer.release();
    mediaPlayer = null;
}

这看起来像是州政府的问题。。更改片段时,应将按钮的状态置于onSaveInstantState()中!当您返回原始片段时,如果不保存按钮的状态,按钮的活动将无法知道按钮是否已按下。。 您可以尝试使用布尔变量来了解按钮是否按下,然后将此变量保存到saveInstantState!在创建时,您可以检查此布尔值并将按钮设置为正确状态

@Override
protected void onSaveInstanceState(Bundle outState) {
    outState.putBoolean("media_player_state", isStarted);
    super.onSaveInstanceState(outState);
}
然后在onCreate(Bundle savedInstanceState)中

然后在button.OnClick()中


您确定只使用了mediaPlayer的一个实例吗?对mediaPlayer.pause()是;我只使用了一个实例,但当我使用mediaPlayer.stop()时;然后,我必须根据文档创建新实例,而不是关于按钮状态。按钮的状态非常好。这是一些媒体播放器的问题。回到片段1时,我无法再次访问mediaPlayer实例是的,我知道。。如果将媒体播放器实例保存在布尔变量中。。然后在onCreate中,如果(variable=true)MediaPlayer.stop Else MediaPlayer.playI已完成此操作,则只需执行此操作即可。如果(isStarted){mediaPlayer.stop();}其他{mediaPlayer.play();}。但不幸的是,这不起作用。你能为savedInstanceState更新你的答案吗?我不明白您是否将isStarted变量保存在onSaveInstantState()中??如果没有此功能,我将无法初始化isStarted=false;全球地。这会造成问题吗?不,不会,如果你不明白为什么需要这些东西,请阅读,不要忘记每次点击按钮时设置isStarted的值。。。if(isStarted==true{mediaPlayer.stop();isStarted=false;}else{mediaPlayer.start();isStarted=true;}
if(savedInstanceState!=null && savedInstanceState.containsKey("media_player_state")){
        isStarted = savedInstanceState.getBoolean("media_player_state");
    }
    else {
        isStarted = false;
    }
if(isStarted == true) mediaPlayer.stop();
else mediPlayer.play();