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?
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 –
Il servizio è elencato in Impostazioni> Applicazioni> RunningServices? –
@BehzadMomahedHeravi no –