2012-12-11 116 views
0

我发现了一些代码,告诉你服务是否正在运行。但它正在编译错误,我不知道为什么。我的服务类的名字是AudioService(扩展服务类),我对代码,它说的if语句行收到编译错误,编译时检查服务是否正在运行的方法

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

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

我正在使用与服务绑定的Activity内部的方法。我在onResume方法中调用bindService(),在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; 
} 
+0

请粘贴您的堆栈跟踪 – dd619

回答

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; 
} 
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; 
} 
相关问题