编辑 - 找到一个简单的5-10线解决方案!看下面我自己的答案!好极了!!!!!!!!!
我搜索了5个小时,数十个SO帖子,没有答案,这似乎是最简单明显的怪异事!
编辑顺便说一句,这不是一个音乐播放器的应用程序,只是一个应用程序来查看图片和文本,打开多个活动,如菜单和关于,查看差异类型的图片等.我只想播放一些简单的背景音乐,同时通过图片看和文字,为什么这么难?
另一个编辑 - 似乎主要的问题是:"为什么按下主页按钮不打开onPause或onStop ???" - 我可以知道何时停止媒体播放器?我在市场上下载的游戏怎么做到这个???
家庭活动开始
然后
媒体播放器开始:
player = MediaPlayer.create(this, R.raw.idil);
player.setLooping(true);
player.setVolume(100,100);
player.start();
Run Code Online (Sandbox Code Playgroud)
玩家在onCreate之外宣布
MediaPlayer player;
Run Code Online (Sandbox Code Playgroud)
当其他活动被打开时,背景音乐继续不间断,这很好,这就是我想要的.
现在,当我完成了我非常简单的应用程序(只显示差异活动中的一些图片和文本)时,我要么多次单击BACK以进入主页/原始活动,然后又一次"退出",或者,我只是按回家"退出",因为我已经完成了这个应用程序,我不再需要听到那个音乐了.
选项1
通话player.stop();中的onPause覆盖,这是不是我想要的,因为当我离开家的活动像"菜单"和"约",我也没有什么用暂停和打开新的活动的时候,因为我做恢复等活动的背景音乐停止不希望漂亮的背景音乐"跳过"或被打断.
方案2
@Override
protected void onPause() {
super.onPause();
if (this.isFinishing()){
player.stop();
}
}
Run Code Online (Sandbox Code Playgroud)
这是更好的,因为背景音乐不会在活动之间停止,当我从我的家庭活动按BACK时,音乐停止,我可以继续享受安卓的安卓手机,但问题是,当按下HOME时按钮"退出"我的应用程序,那讨厌的背景音乐继续播放.
奇怪
@Override
protected void onStop() {
super.onStop();
if (this.isFinishing()){
player.stop();
}
}
Run Code Online (Sandbox Code Playgroud)
与onPause相同(我确实理解实际的差异)
编辑 - 这似乎没关系,如果player.stop(); 高于或低于super.onStop(); 但它影响我无法看到的东西,无论哪种方式,仍然没有解决方案:(
OOOOO
OOOOO
编辑 - 另一个选项 - 但不工作
public void onUserLeaveHint() { …Run Code Online (Sandbox Code Playgroud)