在调用Context.bindService
.
有没有办法检查?
您可以使用代码检查服务是否正在运行
private boolean isMyServiceRunning(Class<?> serviceClass) {
ActivityManager manager = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);
for (RunningServiceInfo service : manager.getRunningServices(Integer.MAX_VALUE)) {
if (serviceClass.getName().equals(service.service.getClassName())) {
return true;
}
}
return false;
}
我称之为:
isMyServiceRunning(MyService.class)
来自 hack bods 在此Google Group Discussion上的响应的一些摘录
如果您的客户端和服务器代码是同一个 .apk 的一部分,并且您使用具体的 Intent(指定确切服务类的意图)绑定到服务,那么您可以简单地让您的服务在运行时设置一个全局变量您的客户可以检查。
我们故意没有 API 来检查服务是否正在运行,因为几乎没有失败,当你想做类似的事情时,你的代码中会出现竞争条件。
请看评论
ServiceConnection serviceConnection = new ServiceConnection() {
@Override
public void onServiceConnected(ComponentName name, IBinder service) {
// capture the service object , check for alive or not
service.isBinderAlive();
}
@Override
public void onServiceDisconnected(ComponentName name) {
}
};