Java Android:如果我继续按后退按钮并再次启动应用程序,Mediaplayer会播放多次

Java Android:如果我继续按后退按钮并再次启动应用程序,Mediaplayer会播放多次,java,android,media-player,android-activity,Java,Android,Media Player,Android Activity,当我播放歌曲并按下后退按钮返回到家中时,音乐继续播放。当我再次启动应用程序时,音乐会播放两次。我认为这是onResume方法,因为我注释掉了该方法,问题就停止了。如何让简历正常工作?我尝试在onResume中使用if(backgroundMusic.isplaying()),但当我从另一个活动恢复时,应用程序崩溃。我做错了什么 //global mediaplayer MediaPlayer backgroundMusic; /** Called when the activity is fi

当我播放歌曲并按下后退按钮返回到家中时,音乐继续播放。当我再次启动应用程序时,音乐会播放两次。我认为这是onResume方法,因为我注释掉了该方法,问题就停止了。如何让简历正常工作?我尝试在onResume中使用if(backgroundMusic.isplaying()),但当我从另一个活动恢复时,应用程序崩溃。我做错了什么

//global mediaplayer
MediaPlayer backgroundMusic;

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);  
    loadBackgroundMusic();

}

private void loadBackgroundMusic() {

    //load mp3 into object and start it
    backgroundMusic = MediaPlayer.create(this,R.raw.backgrounmusic);
    backgroundMusic.setLooping(true);
    backgroundMusic.start();

}
        @Override
        protected void onPause() {
            super.onPause();
            backgroundMusic.release();

        }

        @Override
        protected void onResume() {
            super.onResume();
            loadBackgroundMusic();

        }

        @Override
        protected void onStop() {
            super.onStop();
            backgroundMusic.release();
        }

我不确定你想要什么样的行为。在我看来,这是两种情况之一:

  • 音乐只能在我的活动可见时播放

    如果是这种情况,您应该更仔细地查看文档。例如,这将告诉您第一次创建活动时也将调用
    onResume()

    因此,解决方案是在
    onResume()
    中启动音乐,然后在
    onPause()
    或类似位置停止

  • 在开始一次活动后,即使我返回主屏幕,也应播放音乐

    在这种情况下,你真的想要一个新的


  • 你能描述一下你想要的行为吗?我想让活动在我恢复活动时播放音乐。我的问题是我在onResume()中放了什么,以便在我从onPause()返回时播放音乐。目前我调用了loadBackgroundMusic(),它加载mp3并再次播放。这样,每当我按下“后退”按钮返回主页并重新启动应用程序时,音乐就会播放两次。@iamarnold从
    onCreate()
    中删除
    loadBackgroundMusic()
    ,并在
    onPause()
    中添加
    backgroundMusic.stop()
    backgroundMusic.release()之前。