¿Comprobar si el servicio se está ejecutando en Android?

Quiero comprobar si hay un servicio en ejecución. Escribí este código.

public class startServiceOrNo { public static void startServiceIfItsNotRuning(Class<?> class1, Context context) { ActivityManager manager = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE); for (RunningServiceInfo service : manager.getRunningServices(Integer.MAX_VALUE)) { if (class1.getName().equals(service.service.getClassName())) { Lg.d("servisstart SERVICE ALREADY START" + class1.getName()); return; } } Lg.d("servisstart SSERVICE NEW SERVIS " + class1.getName()); context.startService(new Intent(context, class1)); } 

Y utilizarlo startServiceOrNo.startServiceIfItsNotRuning (OfflineChopsMonitor.class, this)

Si compruebo el servicio de una clase de su trabajo, pero si compruebo el mismo servicio de diferente clase, su cheque no funciona

1.) En clase de actividad:

 private boolean isMyServiceRunning(Class<?> serviceClass) { ActivityManager manager = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE); for (RunningServiceInfo service : manager.getRunningServices(Integer.MAX_VALUE)) { if (serviceClass.getName().equals(service.service.getClassName())) { return true; } } return false; } 

2.) En la clase Non-Activity (BroadcastReceiver):

 private boolean isMyServiceRunning(Class<?> serviceClass,Context context) { ActivityManager manager = (ActivityManager)context. getSystemService(Context.ACTIVITY_SERVICE); for (RunningServiceInfo service : manager.getRunningServices(Integer.MAX_VALUE)) { if (serviceClass.getName().equals(service.service.getClassName())) { Log.i("Service already","running"); return true; } } Log.i("Service not","running"); return false; } 

¿Por qué no dejas que el Servicio mismo averigüe eso?

 public class MyService extends Service { private boolean mRunning; @Override public void onCreate() { super.onCreate(); mRunning = false; } @Override public int onStartCommand(Intent intent, int flags, int startId) { if (!mRunning) { mRunning = true; // do something } return super.onStartCommand(intent, flags, startId); } } 

Utilizo el seguimiento de dentro de una actividad:

 private boolean isMyServiceRunning(Class<?> serviceClass) { ActivityManager manager = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE); for (RunningServiceInfo service : manager.getRunningServices(Integer.MAX_VALUE)) { if (serviceClass.getName().equals(service.service.getClassName())) { return true; } } return false; } 
  • El servicio USSD no funciona
  • Captura de notificaciones de otras aplicaciones
  • Detectando Android L Battery Saver
  • ¿Por qué el servicio Android falla con NullPointerException?
  • ¿Cómo cancelar la tarea de repetición en el Administrador de alarmas?
  • Android: Mejor manera de obtener datos del servidor (Widget + aplicación)
  • ServiceConnectionLeaked en Android
  • ¿La actualización de una notificación elimina el estado de primer plano de un servicio?
  • ¿Por qué no Service.onStop método?
  • Cómo crear una aplicación de Android que se activa en eventos de sacudidas cuando la pantalla está bloqueada?
  • Cómo detener un servicio de Android desde un hilo
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.