Что происходит, когда служба получает команду запуска после вызова stopSelf()

Я использую действие для привязки к службе и оттуда вызываю startService(), чтобы служба выполняла задачу. Когда служба завершает задачу, она вызывает stopSelf(). Естественно, Служба не останавливается, пока моя Активность не отвяжется. Что происходит, когда действие снова вызывает startService() после вызова службы stopSelf(). Будет ли Служба уничтожена после того, как Активность отвяжется, или она продолжит работать?


person Moritz    schedule 21.08.2014    source источник
comment
Я ожидаю, что он продолжит работать, но вы, вероятно, захотите протестировать этот сценарий.   -  person CommonsWare    schedule 21.08.2014
comment
@CommonsWare: я ожидаю, что он тоже будет работать. Почему-то Android редко ведет себя так, как я ожидал (это только я?). Однако в этом случае он ведет себя так, как ожидалось, см. Мой ответ ниже.   -  person Moritz    schedule 22.08.2014


Ответы (2)


Методом проб и ошибок выясняется, что служба продолжает работать. Вызов действия startService() фактически отменяет предшествующий вызов Служб stopSelf(). Код для моего эксперимента можно найти здесь. https://gist.github.com/Proper-Job/56d22b36714e3339be05

person Moritz    schedule 22.08.2014

Ваша служба уничтожается в момент остановки stopSelf()

person TaRan LaYal    schedule 21.08.2014
comment
Нет, в точке stopSelf() он связан активностью, поэтому он продолжает работать в этой точке. - person Moritz; 21.08.2014
comment
На самом деле он уничтожается, и после этого вы просто пропускаете поток и объект службы, по крайней мере, до тех пор, пока поток не завершится. - person TaRan LaYal; 22.08.2014
comment
@TaRanLaYal: Нет, пока он еще связан. Служба уничтожается при вызове stopService() тогда и только тогда, когда к ней нет незавершенных подключений. - person CommonsWare; 22.08.2014