как запретить запуск сервиса, если уже запущен андроид

Нажатием кнопки я хочу запустить сервис, используя методstartService(new Intent(currentActivity.this,MyService.class)) но если служба работает, я не хочу вызывать этот метод, чтобы избежать запуска службы, которая уже запущена. Как это возможно. Я использую оба Интент сервис а такжеОбслуживани в одном проекте и хотите применить одно и то же условие для обоих.

Ответы на вопрос(4)

startService(). Служба запуска позвонитonStartCommand() Если служба еще не запущена, она позвонитonCreate(). Инициализируйте свои переменные и / или запустите поток вonCreate().

 likejudo23 авг. 2016 г., 14:07
это правильный ответ. onCreate () игнорируется.
Решение Вопроса

startService(Intent) многократно

Ты получишьonStartCommand() в сервисе. Так что имейте это в виду

Источник: Обратите внимание, что несколько вызововContext.startService() не вкладывают (хотя они приводят к нескольким соответствующим вызовамonStartCommand()), поэтому независимо от того, сколько раз он был запущен, служба будет остановлена один разContext.stopService() илиstopSelf() называется; Однако службы могут использовать своиstopSelf(int) метод, обеспечивающий остановку службы до тех пор, пока не будут обработаны начальные намерени

В:http: //developer.android.com/reference/android/app/Service.htm по теме: Сервисный цикл

 CommonsWare24 мая 2012 г., 18:34
@ AtulBhardwaj: звонки наstartService() всегд курокonStartComand(). Период. Так что, либо не звониstartService() или умнееonStartCommand() это может быть вызвано вызовом несколько раз.
 Atul Bhardwaj24 мая 2012 г., 16:40
Спасибо за ваш быстрый ответ. Ваш комментарий мне очень поможет, но я не хочу снова вызывать эти методы, если служба запущен

система Android вызывает метод onStartCommand () службы. И если сервис еще не запущен, система сначала вызывает onCreate (), а затем вызывает onStartCommand ().

Можно сказать, что запуск службы Android выполняется только один раз в жизненном цикле и продолжает работать до полной остановки. Если любой другой клиент захочет запустить его снова, тогда будет вызываться только метод onStartCommand ().

при начале звонка:

Intent bindIntent = new Intent(this,ServiceTask.class);
    startService(bindIntent);
    bindService(bindIntent,mConnection,0);

Затем, чтобы проверить, работает ли ваш сервис, используйте такой метод:

    public static boolean isServiceRunning(String serviceClassName){ 
             final ActivityManager activityManager = (ActivityManager)Application.getContext().getSystemService(Context.ACTIVITY_SERVICE);     
             final List<RunningServiceInfo> services = activityManager.getRunningServices(Integer.MAX_VALUE);      
           for (RunningServiceInfo runningServiceInfo : services) {         
             if (runningServiceInfo.service.getClassName().equals(serviceClassName)){             
                return true;         
             }     
           }     
         return false; 
        }
 Atul Bhardwaj24 мая 2012 г., 16:38
Этот код работает только в том случае, если я связываю службу с действием ??? Я думаю, что привязка службы к действию будет работать до тех пор, пока приложение не будет запущен
 IgorGanapolsky01 июл. 2016 г., 16:25
Почему это Связанная служба здесь нужно? Разве мы не можем просто использовать Запущенный Сервис?
 Bharath Mg17 мар. 2015 г., 08:08
Это не всегда будет работать. Он не принимает во внимание «Служба остановлена». И это в основном для отображения пользовательского интерфейса Running Services. Я использовал это, и это не будет работать в KitKat всегда. Скорее, вы можете использовать startService ВСЕГДА и использовать сервис onCreate и onStartCommand для выполнения ваших задач. Это правильный путь.

Ваш ответ на вопрос