2012-03-27 6 views
4

У меня есть служба, которая, когда я ее запускаю, планирую с диспетчером аварийной сигнализации работать в 00:00, Я хочу проверить, работает ли моя служба или нет?Служба проверки работает или нет

Когда я проверяю Настройки -> Приложения -> Выполнение задач, мое обслуживание существует в кешированном процессе, поэтому код ниже не работает, потому что мой сервис, отмечающий при запуске службы, может мне кто-нибудь помочь?

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

ответ

2

BindService возвращает ложь, если вы не имеете успех в затруднительное к услуге:

Возвращения

Если вы успешно привязывается к службе, правда, возвращается; false возвращается, если соединение не выполнено, поэтому вы не получите объект службы.

Я бы использовал это, чтобы проверить, не работает ли служба.

Обязательно не связываться с флагом AUTO_CREATE, иначе будет создана служба.

1

Я использую следующие внутри деятельности:

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; 
} 
Смежные вопросы