1

У меня есть служба, связанная с контекстом приложения, эта служба запускается в отдельном процессе (скажем, #service_process). Я имитирую крушение приложения, бросая неперехваченное исключение, и основной процесс приложения (#main_proccess) останавливается, явно убивая и объединяя компоненты, включая основной контекст приложения. Служба также несвязана (отключена) и уничтожена (я вызываю вызов службы # onDestroy()).Что происходит с удаленным хостингом службы после службы?

Однако #service_process остается в живых, согласно $ adb shell ps | grep com.my_app даже после того, как # основной процесс мертв.

Может ли кто-нибудь объяснить причины такого поведения? Как можно избежать «зависания» #service_process?

ответ

0

На самом деле, сервисные процессы мало чем отличаются от приоритетных. Как описано here

Необычная и Принципиальная особенность Android является то, что срок служба приложения, процесса является непосредственно не контролируется приложением сами. Вместо этого он определяется системой посредством комбинации тех частей приложения, которые, как известно системе, работают, как это важно для пользователя, и сколько общей памяти доступно в системе.

И это одна:

процесс обслуживания ... поэтому система будет всегда поддерживать такие процессы работает, если не будет недостаточно памяти для сохранения все переднего плана и видимого процесса.

+0

Спасибо, но, как я описал, я связываюсь с сервисом и не запускаю его, поэтому у меня нет '3. Сервисный процесс'. Может быть, у меня есть то, о чем говорится в «5». empty process' – kiruwka

+0

Я так не думаю, потому что неважно, свяжете ли вы его или вызовите startService() (в обоих случаях начнется процесс, но в случае связывания он будет привязан к настройке). На самом деле это имеет значение только для вызова onDestroy для вашего сервиса, но не для жизненного цикла процесса в соответствии с моим пониманием, и я не могу найти никакой информации о привязке/процессе жизни. – sandrstar

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