2012-03-27 17 views
4

Ich habe einen Service, wenn ich es starte, planen mit Alarm-Manager auf 00:00 laufen, ich will überprüfen, dass mein Dienst läuft oder nicht?überprüfen Service läuft oder nicht

Wenn ich einchecke Einstellungen -> Anwendungen -> Ausführen von Aufgaben, gibt es meinen Dienst im Cache-Prozess, so unten Code funktioniert nicht, weil mein Dienst im laufenden Dienst, kann mir jemand helfen?

private boolean isServiceRunning(String serviceName) { 
     ActivityManager am = (ActivityManager) this.getSystemService(ACTIVITY_SERVICE); 
     List<ActivityManager.RunningServiceInfo> l = am.getRunningServices(50); 
     Iterator<ActivityManager.RunningServiceInfo> i = l.iterator(); 
     while (i.hasNext()) { 
      ActivityManager.RunningServiceInfo runningServiceInfo = (ActivityManager.RunningServiceInfo) i.next(); 
      if(runningServiceInfo.service.getClassName().equals(serviceName)) { 
       return true; 
      } 
     } 
     return false; 
    } 

Antwort

2

BindService gibt false zurück, wenn Sie nicht über den Erfolg in der Bindung an den Service:

Returns

Wenn Sie erfolgreich an den Dienst gebunden haben, true zurückgegeben; false wird zurückgegeben, wenn die -Verbindung nicht hergestellt wurde, sodass Sie das Dienstobjekt nicht erhalten.

Ich würde das verwenden, um zu überprüfen, ob der Dienst nicht ausgeführt wird.

Nur sicher sein, nicht mit AUTO_CREATE-Flag zu binden, oder der Dienst wird ebenfalls erstellt.

1

ich nach dem Gebrauch aus dem Inneren einer Aktivität:

private boolean isMyServiceRunning() { 
    ActivityManager manager = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE); 
    for (RunningServiceInfo service : manager.getRunningServices(Integer.MAX_VALUE)) { 
     if (MyService.class.getName().equals(service.service.getClassName())) { 
      return true; 
     } 
    } 
    return false; 
} 
Verwandte Themen