Java 重新开始播放背景音乐的onResume无效

Java 重新开始播放背景音乐的onResume无效,java,android,onresume,onpause,background-music,Java,Android,Onresume,Onpause,Background Music,这是我的第一个应用程序,所以这个问题/答案可能非常基本。 我目前有一个暂停,当播放器离开屏幕时停止播放音乐。我也尝试过做类似的事情,但是使用onResume,这样音乐会再次播放背景音乐。不幸的是,这不起作用。当我按下重置按钮或返回主页并返回游戏页面时,它会再次工作。但它只是不能像我希望的那样,在应用程序回到屏幕上时立即加载 我的代码摘录如下 package com.example.android.buttongame; 公共类MainActivity扩展了AppCompatActivity{

这是我的第一个应用程序,所以这个问题/答案可能非常基本。 我目前有一个暂停,当播放器离开屏幕时停止播放音乐。我也尝试过做类似的事情,但是使用onResume,这样音乐会再次播放背景音乐。不幸的是,这不起作用。当我按下重置按钮或返回主页并返回游戏页面时,它会再次工作。但它只是不能像我希望的那样,在应用程序回到屏幕上时立即加载

我的代码摘录如下

package com.example.android.buttongame;

公共类MainActivity扩展了AppCompatActivity{

...

MediaPlayer winningSound;
MediaPlayer buttonSound;
MediaPlayer backgroundMusic;


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    /*
    Plays ticking background noise at the start of this activity. Set on a loop
     */

backgroundMusic = MediaPlayer.create(this, R.raw.ticking_background);

    backgroundMusic.start();
    backgroundMusic.setOnErrorListener(new android.media.MediaPlayer.OnErrorListener() {

        public boolean onError(MediaPlayer mediaplayer, int i, int j)
        {
            return false;
        }
    });
    backgroundMusic.setLooping(true);


}

@Override
public void onResume(){
    super.onResume();
    backgroundMusic.start();
}

public void onPause() {
    super.onPause();
    backgroundMusic.stop();
}



...

public void reset(View v) {

     /*
        Plays button sound
         */
    buttonSound = MediaPlayer.create(MainActivity.this, R.raw.button_sound);
    buttonSound.start();

    /*
     * Refreshes activity
     */

   this.recreate();

}
。。。 公共网页视图{

     /*
        Stops background music
         */

    backgroundMusic.stop();

     /*
        Plays button sound
         */
    buttonSound = MediaPlayer.create(MainActivity.this, R.raw.button_sound);
    buttonSound.start();

    /*
    Leads to home page
     */
    Intent homePage = new Intent(this, HomePage.class);
    startActivity(homePage);
}
}

在backgroundMusic.stop的位置,你应该使用backgroundMusic.pause,然后你将实现你想要的

调用stop停止播放,并使处于Started、Paused、Prepared或PlaybackCompleted状态的MediaPlayer进入Stopped状态。 一旦处于停止状态,在调用prepare或prepareAsync将MediaPlayer对象再次设置为Prepared状态之前,无法开始播放。 调用stop对已处于Stopped状态的MediaPlayer对象没有影响

以下是MediaPlayer的文档,可以帮助您了解其API。

您能为您的程序添加一些日志吗?请:最重要的是在backgroundMusic onErrorListener中,这样您可以查看是否出现了任何错误以及错误是什么,并在onResume处理程序中检查它是否真的被调用了?如果出于某种原因您不允许这样做,您可以在以后的li事件中启动音乐fecycle或您可以在短时间延迟(例如100毫秒)后重试启动音乐。但是,通过默默地接受错误,您很可能会得到您正在丢失的宝贵信息!谢谢,古拉姆的回答对我很有用。但我会研究如何解决未来的问题谢谢!这很简单,但对我来说很有用: