2013-11-09 2 views
0

ОС Android никогда не перестает удивлять меня. Мне жаль, что я не знаю, каково правило opon, которое они решат, чтобы убить ваш Thread или нет, пока ваше приложение находится на заднем плане. Это очень запутанно, сначала я был уверен, что они запускают код службы в специальных потоках службы, и ни один поток, созданный из Сервисного потока, не исключается, когда приложение переходит в фоновый режим, но затем, когда i Log Thread.currentThread() я вижу что оба кода Деятельности и код Сервиса работают на одном и том же главном потоке, тогда как, как описано в документе, службы могут работать на фоне во время действия can not.Сервис onStartCommand и onCreate выполнен из той же темы, что и Activity onCreate

Как все это работает? как они решат, какую нить убить, а что нет? как они решают, какой объект используется или что его память может быть освобождена? сначала я ожидал, что он будет работать, как в стандартной среде Java, но они все изменили неясным и не очень документированным образом ...

Любой, кто здесь может дать мне ссылку на хорошую статью об этой проблеме или даже лучше, может объясните это мне?

ответ

0

Для начала, имея дело с Услугами, вы, вероятно, должны ознакомиться с документом Service. Соответствующая строка оттуда:

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

Все это достаточно хорошо документировано. ОС Android не убивает конкретные потоки, а только целые процессы. Вы можете прочитать больше об этом в разделе Process Lifecycle того же документа.

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