2012-10-15 10 views
5

Sto eseguendo un servizio per ottenere notifiche ogni 1 ora nella mia applicazione.Android: controlla se il mio servizio è in esecuzione in background

Il servizio viene eseguito ogni 1 ora; L'ho controllato usando il logcat.

Ma dal momento che sto avviando questo servizio nel onResume() del mio MainActivity, voglio controllare se il servizio è già in esecuzione, e avviarlo solo se non è in esecuzione.

Ho usato questo codice:

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; 
} 

ma ottengo sempre falsa.

Quindi ho controllato l'output service.service.getClassName(). E il mio servizio non è presente nell'elenco.

È perché la mia applicazione è sconosciuta? o qualcos'altro?

+2

Perché è necessario verificare che il servizio sia in esecuzione? Supponendo di avviare il servizio con context.startService (...) il servizio verrà creato solo se attualmente non è in esecuzione, ma onStartCommand (...) del servizio verrà sempre chiamato –

+0

Il servizio è elencato in Impostazioni> Applicazioni> RunningServices? –

+0

@BehzadMomahedHeravi no –

risposta

0

So che è un po 'in ritardo ma questa risposta potrebbe aiutare gli altri che stanno cercando lo stesso.

Hai iniziato il servizio utilizzando context.startService()?
Assicurarsi che il file manifesto contiene seguente:

<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; 
} 

// ho sfondo il servizio GPS e ho verificato con successo che il mio servizio GPS è in esecuzione o meno.

// Felice codifica ...

Problemi correlati