Android——推断Service是否已经启动

Posted yfceshi

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android——推断Service是否已经启动相关的知识,希望对你有一定的参考价值。

          延续百度地图定位的Demo。採用Service来进行百度定位,并且将数据上传到server上遇到了一个问题:在真机中使用清理内存来关闭程序的之后,Service会被关闭,可是过几秒中,它又会自己主动重新启动。重新启动就算了,并且再次登陆系统的时候,又会开启一个一样的服务,在LogCat中就会看到每次都获取到两次的定位数据。

然后想想能否够在建立Service之前推断这个服务有没有被创建?仅仅要能做这个推断。那么服务存在我们就无论它,假设不存在则创建。本着这个思路,百度发现可行(Service后台服务创建时最好都要推断是否存在),代码例如以下:


private boolean isWorked(String className) {
			ActivityManager myManager = (ActivityManager) LoginActivity.this
					.getApplicationContext().getSystemService(
							Context.ACTIVITY_SERVICE);
			ArrayList<RunningServiceInfo> runningService = (ArrayList<RunningServiceInfo>) myManager
					.getRunningServices(30);
			for (int i = 0; i < runningService.size(); i++) {
				if (runningService.get(i).service.getClassName().toString()
						.equals(className)) {
					return true;
				}
			}
			return false;
		}

推断过程:

if(!this.isWorked("包.服务名")){
					Intent intent = new Intent();
					intent.setAction("该服务组件的intent-filter的action");
					// 启动Service
					startService(intent);
				}
				else{
					Log.i("info", "服务已经启动了!

"); }













以上是关于Android——推断Service是否已经启动的主要内容,如果未能解决你的问题,请参考以下文章

Android 推断程序在手机中是否是活动状态或者正在执行状态

android开发教程之开机启动服务service示例

Android 逆向Android 权限 ( adb 降权相关的属性 | ro.secure 属性 | ro.debuggable 属性 | service.adb.root 属性 )(代

Android 逆向Android 权限 ( adb 降权相关的属性 | ro.secure 属性 | ro.debuggable 属性 | service.adb.root 属性 )(代

android7.0 怎样启动service

Android重学系列 Service 启动和绑定原理