2013-11-17 4 views
0

В одном случае один service, запущенный другим компонентом, запускается в основном потоке пользовательского интерфейса этого компонента, в то время как служба может жить даже в том случае, если этот компонент разрушен, поэтому мой вопрос заключается в том, где следует выполнить service, если компонент что service остановлен?Жизненный цикл службы Android

ответ

2

Обычно, когда вы звоните startService(), служба будет работать до тех пор, пока вы не вызовете stopService() с другого компонента или stopSelf() из самой службы. И onStartCommand() всегда будет run on UI thread.

Если служба запущена, последующие вызовы startService() не создадут другой экземпляр вашей службы, а снова запустите onStartCommand() на запущенном. Это немного отличается, если вы привязываете свой компонент к сервису. В этом случае служба автоматически уничтожается, когда вы отключаете все компоненты. Подробнее об этом см .: http://developer.android.com/guide/components/services.html#Lifecycle.

Кроме того, обратите внимание, что существуют различные способы держать бегущую службы, в зависимости от того, что you return from the onStartCommand():

START_STICKY используется для служб, которые явно начали и остановленных по мере необходимости, в то время как START_NOT_STICKY или START_REDELIVER_INTENT являются используется для служб, которые должны оставаться только при обработке любых команд, отправленных им.

Чтобы ответить на ваш вопрос конкретно, где и как начать обслуживание, зависит от того, что именно вы хотите с ним делать. Если компонент, который запустил службу, остановился, вам нужно либо: 1) получить новую ссылку на услугу с другого компонента и остановить ее или 2) остановить службу из самой службы. Но сервис не остановится, потому что компонент сделал. Если вы не привязываете его к сервису.

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