在应用程序运行时,按HOME键返回到手机桌面,背景音乐怎样自动关闭
2012-12-14 14:34
302 查看
在公司做一个项目时,要添加背景音乐。项目当中有多个Activity。将背景音乐放在一个Service当中。但问题是:当在不是应用程序的首个Activity按下HOME键退出后,音乐依然播放,Service没有调用到StopService()方法。其实平常许多网络上的APK也同样有这样的问题。
所以查了相关资料有个方法比较有用:可以设置个全局变量
static boolean isBehind = false;
然后在每个Activity中做如下的处理:
在onResume方法中
将这个变量设置成false;
在onPause方法中
将这个变量设置成true;
在onStop方法中进行判断,
if(isBehind != false)
stopService;
当你跳转到另一个activity的时候,
具体的activity生命周期如图:
![](http://img.my.csdn.net/uploads/201212/14/1355466358_3466.png)
先执行第一个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
所以查了相关资料有个方法比较有用:可以设置个全局变量
static boolean isBehind = false;
然后在每个Activity中做如下的处理:
在onResume方法中
将这个变量设置成false;
在onPause方法中
将这个变量设置成true;
在onStop方法中进行判断,
if(isBehind != false)
stopService;
当你跳转到另一个activity的时候,
具体的activity生命周期如图:
![](http://img.my.csdn.net/uploads/201212/14/1355466358_3466.png)
先执行第一个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
相关文章推荐
- WinCE应用程序开机自动运行(三方法)和怎样启动touch calibrate
- Windows Phone 实用开发技巧(5):让你的手机在运行应用程序运行时不自动锁屏
- WinCE应用程序开机自动运行(三方法)和怎样启动touch calibrate
- Windows Phone 实用开发技巧(5):让你的手机在运行应用程序运行时不自动锁屏 推荐
- app退出时,让app在后台运行,app按home键到桌面,再返回app不重启app
- 怎样才能在C#桌面应用程序(winform)中调用运行EXE文件?
- java swing 做桌面应用程序,打包成jar文件,在桌面上点击关闭界面后,在资源管理器中仍可看见线程运行
- xp 关闭自动运行
- android怎样实现关闭系统自动旋转屏幕时能够自动横竖屏
- Spoon:在“云”上运行桌面应用程序
- 使用VS2010开发的MFC Ribbon应用程序运行后关闭了属性界面、输出界面、类视图、通知栏等再次恢复方法
- 正在运行的android程序,按home键之后退回到桌面,在次点击程序图标避免再次重新启动程序解决办法
- 怎样判定应用程序自身运行在“兼容模式”下?
- [VB.NET]怎样才能用VB.NET的代码来关闭一个在运行的程序?????
- C# 设置应用程序开机自动运行
- Silverlight创建桌面客户端应用程序独立安装包(同时打包Silverlight运行时和Xap应用程序文件)
- Silverlight创建桌面客户端应用程序独立安装包(同时打包Silverlight运行时和Xap应用程序文件)
- 单实例运行Java桌面应用程序
- JavaScript常用的返回,自动跳转,刷新,关闭语句汇总
- 怎样设置手机安卓应用程序全屏或者隐去状态栏以及电池等图标?