Если вы запустите сервис, используя startService(), вы должны остановить его, используя stopService().
Существует две причины, по которым система может управлять услугой. Если кто-то вызывает Context.startService(), тогда система будет получать сервис (создавая его и вызывая его метод onCreate(), если это необходимо), а затем вызывает его метод onStartCommand (Intent, int, int) с аргументами, предоставленными клиентом. Служба в этот момент продолжит работу до вызова Context.stopService() или stopSelf(). Обратите внимание, что несколько вызовов Context.startService() не вложены (хотя они приводят к нескольким соответствующим вызовам onStartCommand()), поэтому независимо от того, сколько раз он запускается, служба будет остановлена после Context.stopService() или stopSelf() называется; однако службы могут использовать метод stopSelf (int), чтобы гарантировать, что служба не будет остановлена до тех пор, пока не будут обработаны начатые намерения.
Вы можете связать с сервисом столько ServiceConnection, сколько хотите, с bindService(), но обратите внимание на флаг, который вы ему передали. Если вы пройдете 0, то если вы вызове stopService(), служба остановится (я не знаю, что произойдет с вами ServiceConnection). В противном случае, если вы хотите, чтобы ваш сервис был активным до тех пор, пока ServiceConnection не будет привязан к нему, используйте BIND_AUTO_CREATE.
это от StopService():
запрос о том, что данная услуга заявка остановлена. Если служба не работает, ничего не происходит. В противном случае он будет остановлен. Обратите внимание, что вызовы startService() не учитываются - это останавливает службу независимо от того, сколько раз она была запущена.
Обратите внимание, что если у остановленного сервиса все еще есть объекты ServiceConnection, привязанные к нему с помощью BIND_AUTO_CREATE, он не будет уничтожен до тех пор, пока все эти привязки не будут удалены. Дополнительную информацию о жизненном цикле службы см. В документации по сервису.
Эта функция выдаст SecurityException, если у вас нет разрешения на остановку данной услуги.
я надеюсь, что это помогает ..
Как связать службу, запущенную с помощью startService()? – user123321
@musselwhizzle: этот вопрос очень старый. Если у вас есть вопрос, начните новую тему вопроса. Но нет никакой разницы в методе, в котором вы привязываетесь к уже запущенной службе. – Falmarri
Вы также должны отметить, что для того, чтобы полностью удалить службу из жизненного цикла действия, запустите службу, передав контекст приложения. Это означает, что услуга привязана к жизненному циклу приложения, а не к активности. Кроме того, просмотрите START_STICKY. Возвращаясь к запуску с использованием контекста приложения, вы можете удалить свою работу из жизненного цикла приложения и перезапустить его в случае сбоя, прежде чем завершить свою задачу. – superuserdo