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

标签 java android media-player android-activity

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

//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();
        }

最佳答案

我不太确定你想要的行为。在我看来,它是以下两个之一:

  1. 仅当我的 Activity 可见时才播放音乐

    如果是这种情况,您应该仔细查看 Activity Lifecycle 的文档。例如,这将告诉您 onResume() 也将在第一次创建 Activity 时被调用。

    因此,解决方案是在 onResume() 中开始播放音乐,并在 onPause() 或类似方法中停止。

  2. 开始我的 Activity 一次后,即使我返回主屏幕也应该播放音乐

    在这种情况下,您确实想要 Service

关于java - Android:如果我继续按后退按钮并再次启动应用程序,Mediaplayer 会播放多次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9420100/

相关文章:

javascript - 调用 Playkit-js 播放器未显示在浏览器中

iphone - 在iPhone应用程序中运行3/4后停止背景音乐

java - 如何使用 ActiveMQ 设置 Spring Cloud Bus?

java - Spring MVC : Required Date parameter 'date' is not present

android - 如何解决 android 和 ios 跨平台开发的#define 问题?

java - 两种不同的布局(垂直和水平)?

java - 获取注册错误 :Account missing when integrating GCM for pushwoosh in android

java - 如何在 Solr 中获取最后的索引记录?

java - Eclipse for PHP 和 Eclipse 或 Java 互相搞乱了?

iphone - 'high speed scrubbing' *提示*出现在哪个版本的iOS中?