0

我发现了一些代码可以告诉您您的服务是否正在运行。但它出现编译错误,我不知道为什么。我的服务类名称是 AudioService(扩展服务的类),我在 if 语句代码行中遇到编译错误,它说,

AudioService.equals(service.service.getClassName())并且来自编译器的错误消息是,

无法从类型 object 对非静态方法 equals(object) 进行静态引用

我正在使用绑定到服务的 Activity 内部的方法。我bindService()onResume方法和unbindService()onPause 中调用。只是想使用某种方法制作一个 Toast 消息以表明该服务正在实际运行。

我做错了什么以及如何使此代码正常工作?

private boolean isServiceRunning() {
    ActivityManager manager = (ActivityManager)getSystemService(ACTIVITY_SERVICE);
    for (RunningServiceInfo service : manager.getRunningServices(Integer.MAX_VALUE)) {
        if (AudioService.equals(service.service.getClassName())) {
            return true;
        }
    }
    return false;
}
4

2 回答 2

0

尝试这个

 public boolean isMyServiceRunning(Context context) {
    ActivityManager manager = (ActivityManager) context
            .getSystemService(Context.ACTIVITY_SERVICE);
    for (RunningServiceInfo service : manager
            .getRunningServices(Integer.MAX_VALUE)) {
        if ("com.application.MyService"
                .equals(service.service.getClassName())) {
            return true;
        }
    }
    return false;
}
于 2012-12-11T12:04:05.670 回答
0

用这个AudioService.class.getName()

 private boolean isServiceRunning() {
  ActivityManager manager = (ActivityManager)getSystemService(ACTIVITY_SERVICE);
  for (RunningServiceInfo service : manager.getRunningServices(Integer.MAX_VALUE)) {
    if (AudioService.class.getName().equals(service.service.getClassName())) {
      return true;
    }
  }
  return false;
}
于 2012-12-11T12:06:03.670 回答