2016-05-26 5 views
0

В моем приложении я запускаю службу несколько раз, даже когда она запущена. Это сервис, который постоянно работает.Вызывает ли stopStervice() все ожидающие намерения службы

Мой вопрос здесь, когда я звоню stopService(), остановит ли он текущий текущий сервис и ТАКЖЕ очистит стек ожидающего намерения? Потому что я хочу быть уверенным, что он больше не работает.

+1

У вас есть IntentService, который постоянно работает? Это не кажется вероятным. – SlowAndSteady

+0

Вы совершенно правы, я сделал опечатку, это на самом деле служба – Jaythaking

+0

Почему вы начинаете свое обслуживание несколько раз, даже его липкий сервис. Можете ли вы это объяснить, я хочу подумать об этом. Существует так много способов запуска ваших методов обслуживания без повторного создания. –

ответ

0

Я не останавливаюсь Service, это STICKYService. При запуске приложения я управления услугой работает или не нравится:

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

Использование:

if(!isMyServiceRunning(MyService.class, getApplicationContext())){ 
     startService(new Intent(this, MyService.class)); 
} 

Но когда я выйти мой пользователь Я останавливаю обслуживание как:

Intent serviceIntent=new Intent(mContext,MyService.class); 
mContext.getApplicationContext().stopService(serviceIntent); 
+0

Я пробовал это тоже ... Делает крах приложения для некоторых конкретных случаев использования и не рекомендуется многим пользователям. См. Эту ссылку: http://stackoverflow.com/a/5921190/3457218 – Jaythaking

+0

Если вы прочтете ответ на свой вопрос: «Это работает надежно, потому что оно основано на информации о запуске сервисов, предоставляемых операционной системой Android через ActivityManager # getRunningServices «. Я думаю, что получение некоторой информации, предоставляемой системой Android, более надежной для меня –

+1

Прочитайте комментарии там ... «Этот метод не очень устойчив, он не работает на Android KitKat». «Этот метод предназначен только для отладки или реализации пользовательских интерфейсов типа управления услугами ». Это не предназначено для контроля потока! «... Я на самом деле использовал его раньше, пока он не завершит мое приложение. – Jaythaking

 Смежные вопросы

  • Нет связанных вопросов^_^