在公司做一个项目时,要添加背景音乐。项目当中有多个Activity。将背景音乐放在一个Service当中。但问题是:当在不是应用程序的首个Activity按下HOME键退出后,音乐依然播放,Service没有调用到StopService()方法。其实平常许多网络上的APK也同样有这样的问题。
所以查了相关资料有个方法比较有用:可以设置个全局变量
static boolean isBehind = false;
然后在每个Activity中做如下的处理:
在onResume方法中
将这个变量设置成false;
在onPause方法中
将这个变量设置成true;
在onStop方法中进行判断,
if(isBehind != false)
stopService;
当你跳转到另一个activity的时候,
具体的activity生命周期如图:
先执行第一个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