Android:如果我继续按下后退按钮并重新启动应用程序,Mediaplayer会多次播放
当我播放我的歌曲并按返回按钮返回到主页时,音乐会继续播放。当我再次启动应用程序时,音乐播放两次。我认为这是onResume方法,因为我注释掉了方法并且问题停止了。我如何才能让ResResume正常工作?我尝试在onResume中使用if(backgroundMusic.isplaying()),但是当我从其他活动恢复时,应用程序崩溃。我究竟做错了什么?Android:如果我继续按下后退按钮并重新启动应用程序,Mediaplayer会多次播放
//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();
}
我不确定你想要的行为。在我看来,这是一个二:只有当我的活动是可见的
如果是这样的话,你应该寻找Activity Lifecycle文档仔细
-
音乐应播放。例如,这会告诉你
onResume()
也会在第一次创建活动时被调用。所以解决方法是在
onResume()
开始音乐并在onPause()
或类似的地方停止。 -
一次开始我的活动结束后,音乐应该是,即使我回到主屏幕
在这种情况下,你真的想要一个Service播放。
我的问题是我在onResume()中放入什么,以便在从onPause()返回时播放音乐。目前我调用了loadBackgroundMusic(),它加载了mp3并再次播放。通过这样做,每当我按下后退按钮返回主页并重新启动应用程序时,音乐播放两次。 – iamarnold 2012-02-24 16:04:59
@iamarnold从'onCreate()'中移除'loadBackgroundMusic()',并在'onPause()'的'backgroundMusic.release()'前加'backgroundMusic.stop()'。 – tidbeck 2012-02-24 16:19:22
@iamarnold是否解决了您的问题? – tidbeck 2012-02-27 09:38:19
你能描述一下你想要的行为吗? – tidbeck 2012-02-23 22:49:44
我希望活动在我恢复活动时播放音乐。 – iamarnold 2012-02-24 07:19:32