检查服务是否可用

时间:2016-06-03 09:51:55

标签: android service bindservice

在调用Context.bindService之前,我需要知道特定服务是否可用(正在运行或可以创建)。

有没有办法检查?

2 个答案:

答案 0 :(得分:2)

您可以使用代码

检查服务是否正在运行
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来检查服务是否正在运行,因为当你想要做类似的事情时,几乎没有失败,你的代码中最终会出现竞争条件。

答案 1 :(得分:0)

请参阅评论

button1.enabled=true