2012-12-11 115 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; 
} 
相關問題