在方法上编译错误以检查服务是否正在运行

时间:2012-12-11 11:56:31

标签: android service compiler-errors syntax-error

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

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

  

无法对类型为对象

的非静态方法equals(object)进行静态引用

我正在使用绑定到服务的Activity内部的方法。我在bindService()方法中调用了onResume,在onPause中调用了unbindService()。只是想使用某种方法来制作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;
}

2 个答案:

答案 0 :(得分: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;
}

答案 1 :(得分: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;
}