Я использую действие для привязки к службе и оттуда вызываю startService()
, чтобы служба выполняла задачу. Когда служба завершает задачу, она вызывает stopSelf()
. Естественно, Служба не останавливается, пока моя Активность не отвяжется. Что происходит, когда действие снова вызывает startService()
после вызова службы stopSelf()
. Будет ли Служба уничтожена после того, как Активность отвяжется, или она продолжит работать?
Что происходит, когда служба получает команду запуска после вызова stopSelf()
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
Нет, в точке stopSelf() он связан активностью, поэтому он продолжает работать в этой точке.
- person Moritz; 21.08.2014
На самом деле он уничтожается, и после этого вы просто пропускаете поток и объект службы, по крайней мере, до тех пор, пока поток не завершится.
- person TaRan LaYal; 22.08.2014
@TaRanLaYal: Нет, пока он еще связан. Служба уничтожается при вызове
stopService()
тогда и только тогда, когда к ней нет незавершенных подключений.
- person CommonsWare; 22.08.2014