2 baidu 28662045 baidu_28662045 于 2015.06.02 09:22 提问

多个应用调用同一个service 不产生互斥(以startService启动的)

public boolean isServiceWork(Context mContext, String serviceName) {
boolean isWork = false;
ActivityManager myAM = (ActivityManager) mContext
.getSystemService(Context.ACTIVITY_SERVICE);
List myList = myAM.getRunningServices(40);
if (myList.size() <= 0) {
return false;
}
for (int i = 0; i < myList.size(); i++) {
String mName = myList.get(i).service.getClassName().toString();
if (mName.equals(serviceName)) {
isWork = true;
break;
}
}
return isWork;
}
多个应用就同时启动同一个service,会重复service下的动作,我只是需要其中一个启动,其他的检测到service如果运行就什么事都不做,这该怎么做?上部分代码是检查service的状态。求大神解答!

2个回答

llx1943llx
llx1943llx   2015.06.02 13:01

改成这样可以吗?

 public boolean synchronized isServiceWork(Context mContext, String serviceName) 
baidu_28662045
baidu_28662045 不行,两个程序会同时启动startService
2 年多之前 回复
sumcul
sumcul   2015.06.09 11:44

你是调用services里的方法,互斥不互斥在客户端是无法解决的。除非services提供对方法或资源的互斥调用。

Csdn user default icon
上传中...
上传图片
插入图片