Жизненный цикл Сервиса, который запущен и связан? - PullRequest
6 голосов
/ 09 марта 2011

Я запутался в жизненном цикле службы.
У меня есть много вопросов:

  1. Если мое приложение несколько раз вызывает службу startService(), будет ли запущено несколько службодновременно?Или только один?

  2. В качестве первого, если я несколько раз вызову bindService() Службу в моем приложении, что произойдет с моим приложением?

  3. Предположим, что у меня есть Служба, которая была запущена через startService(), а затем я связываю ее, чтобы дать ей указание сделать что-то.в этом случае, если я проинструктирую (через этот интерфейс Binder), что служба выполняет свой метод stopSelf(), немедленно ли останавливается работающая служба?

  4. Предположим снова, что у меня есть служба, котораяможет быть запущен только с помощью bindService(), а onUnbind переопределяется для возврата true, в этом случае, следует ли мне явно вызывать метод stopSelf для отключения Службы?

Ответы [ 2 ]

4 голосов
/ 07 мая 2013
  1. На устройстве Android существует только один экземпляр Службы. Запущенные службы запускаются только один раз, другие начальные вызовы приведут к повторным вызовам onStartCommand, но не запустят новые экземпляры той же службы.

  2. Если вы запускаете привязанную службу, связываясь с ней, и это первое использование службы, будет создан новый экземпляр и будет вызван метод onBind.

  3. Да. Однако потоки, запущенные службой, и прослушиватели, зарегистрированные службой, будут пропущены. Вы должны позаботиться об этих ресурсах в методе onDestroy.

  4. Нет необходимости звонить, остановить себя. Когда последний пользователь отключается от службы, служба автоматически уничтожается.

0 голосов
/ 09 марта 2011

Да, вы можете запускать несколько сервисов одновременно.Но если вы пользуетесь услугой, вы должны делать это с осторожностью.Если вы запускаете службу, вы должны остановить эту службу с помощью любого метода, например onDestroy() или пользовательского, потому что всякий раз, когда вы завершаете свою деятельность, служба все еще работает в фоновом режиме.обслуживание только тогда, когда вам нужен фоновый процесс, как медиаплеер;в противном случае вы можете достичь всего этого с помощью активности.

Для получения дополнительной информации прочитайте документ службы Android для разработчиков.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...