[置顶] 在应用程序运行时,按HOME键返回到手机桌面,背景音乐怎样自动关闭

在公司做一个项目时,要添加背景音乐。项目当中有多个Activity。将背景音乐放在一个Service当中。但问题是:当在不是应用程序的首个Activity按下HOME键退出后,音乐依然播放,Service没有调用到StopService()方法。其实平常许多网络上的APK也同样有这样的问题。

所以查了相关资料有个方法比较有用:可以设置个全局变量
static boolean isBehind = false;

然后在每个Activity中做如下的处理:
在onResume方法中
将这个变量设置成false;
在onPause方法中
将这个变量设置成true;
在onStop方法中进行判断,
if(isBehind != false)
    stopService;
当你跳转到另一个activity的时候,
具体的activity生命周期如图:

[置顶] 在应用程序运行时,按HOME键返回到手机桌面,背景音乐怎样自动关闭_第1张图片

 

先执行第一个activity的onPause
此时isBehind = true;
然后执行第二个activity的onResume
此时此时isBehind = false;
当第二个activity is running的时候
第一个activity才会onStop
此时不会停止服务
当按home键的时候,就是直接onPause onStop,然后停止服务。

 

另一个问题:当我再次进入应用程序中时,发现背景音乐不再播放了。如果你希望此次背景音乐能继续播放,可以如下处理:

在每个Activitiy中 的onResume方法中  添加

if(!AudioService.isPlay){
   startService(new Intent(this, AudioService.class));
  }

isPlay为服务类Service中我自己定义的一个公共静态变量,在Service中的onStart方法中 为true   在onDestroy中为false

你可能感兴趣的:(android,android,service,service,背景音乐)