2015-10-14 7 views
0

Предположим, что я начал службу из-за активности и ее работы на заднем поле, и если я снова запустил службу, перезапустит службу или будет иметь несколько экземпляров?Несколько экземпляров одной службы

+3

Ни один из них, «Сервис» - это одноэлементный и 'onStartCommand', будет вызван снова – pskink

ответ

1

См the docs на жизненный цикл сервиса:

Есть две причины, по которым услуга может быть запущена системой. Если кто-то вызывает Context.startService(), тогда система будет получать сервис (создавая его и вызывая его метод onCreate(), если это необходимо), а затем вызывает его метод onStartCommand (Intent, int, int) с аргументами, предоставленными клиентом. Служба в этот момент продолжит работу до вызова Context.stopService() или stopSelf().

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

В принципе, создается один раз (вызов onCreate), и для каждого последующего вызова startService, метод onStartCommand вызывается снова.

Сервер определит, следует ли звонить самому onCreate, в зависимости от того, был ли он уже запущен.

если я снова запустить службу затем перезапустить службу

Это не будет воссоздавать или переинициализировать себя, но код в onStartCommand запускается снова, так что будьте уверены, чтобы иметь в виду, что вы не Не делайте ничего там, что не должно случаться более одного раза. Сделайте это в onCreate.

+0

Тим спасибо за ваш ответ ..... виртуальный палец вверх –

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