2012-10-15 27 views
5

Ich bin ein DienstBenachrichtigungen alle 1 Stunde in meiner Anwendung ausgeführt.Android: Überprüfen, ob mein Dienst im Hintergrund läuft

Der Service läuft definitiv alle 1 Stunde; Ich habe es mit dem Logcat überprüft.

Aber da ich diesen Dienst in der onResume() meiner MainActivity starte, möchte ich überprüfen, ob der Dienst bereits ausgeführt wird, und starten Sie es nur, wenn es nicht ausgeführt wird.

habe ich diesen Code:

private boolean isMyServiceRunning() { 
    ActivityManager manager = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE); 
    for (RunningServiceInfo service : manager.getRunningServices(Integer.MAX_VALUE)) { 
     if ("com.android.MyApp.MyServices.NotificationsService".equals(service.service.getClassName())) { 
      return true; 
     } 
    } 
    return false; 
} 

Aber ich bekomme immer falsch.

Also überprüfte ich was Ausgang service.service.getClassName() gibt. Und mein Service ist nicht in der Liste.

Liegt es daran, dass meine Anwendung unbekannt ist? oder etwas anderes?

+2

Warum sollten Sie überprüfen, dass der Dienst ausgeführt wird? Angenommen, Sie starten Ihren Dienst mit context.startService (...) Der Dienst wird nur erstellt, wenn er gerade nicht ausgeführt wird, aber onStartCommand (...) Ihres Dienstes wird immer –

+0

aufgerufen. Ihr Dienst wird unter Einstellungen> Anwendungen> aufgelistet RunningServices? –

+0

@BehzadMomahedHeravi Nr –

Antwort

0

Ich weiß sein bisschen spät, aber diese Antwort könnte anderen helfen, die nach dem gleichen suchen.

Haben Sie Ihren Dienst mit context.startService() gestartet?
Stellen Sie sicher, dass die Manifest-Datei enthält folgende:

<service android:name="com.android.MyApp.MyServices.NotificationsService" /> 
0
private boolean isMyServiceRunning(Context mContext) { 
    ActivityManager manager = (ActivityManager) mContext 
      .getSystemService(Context.ACTIVITY_SERVICE); 
    for (RunningServiceInfo service : manager 
      .getRunningServices(Integer.MAX_VALUE)) { 
     if (**HERE_YOUR_SERVICE'S_CLASS_NAME**.class.getName().equals(
       service.service.getClassName())) { 
      return true; 
     } 
    } 
    return false; 
} 

// i Hintergrund GPS-Dienst haben, und ich habe überprüft erfolgreich, dass mein GPS-Dienst entweder in Betrieb ist oder nicht.

// Glücklich Codierung ...

Verwandte Themen