2014-12-29 4 views
1

Как мы знаем, разница между сервисом и IntentService заключается в том, что IntentService неявно запускает рабочий поток, тогда как служба запускается в потоке основного процесса (UI).Сервис + андроид: процесс «против» IntentService

Это, по-видимому, показывает, какая разница между ними.

Но мой вопрос заключается в том, что есть какая-то разница между

Сервис + андроида: процесс «против» IntentService

Я хочу сказать, если мы запускаем службу в отдельном процессе, чем до сих пор какой-либо разница между ними, кроме Службы использует процесс, тогда как IntentService использует Thread.

+0

Почему вы хотите запустить сервис в другом процессе? – Pr38y

+0

IntentService - это базовый класс для служб, которые обрабатывают асинхронные запросы (выраженные как намерения) по требованию. В классе обслуживания вы можете обрабатывать этот запрос синхронно, так как он будет работать в основном потоке, вам может понадобиться создать отдельный поток внутри класса обслуживания. – Pr38y

+0

@ Pr38y Если я создаю рабочий поток в службе, тогда он также будет преобразован в обработчик асинхронных запросов, не так ли? –

ответ

6

Вы полностью ошибочно поняли концепцию Process и Thread.

IntentService run in a diffrent Thread but run in main process. 

для каждого приложения по умолчанию есть только один процесс, в котором весь код будет работать в том числе Services, Activitys И IntentService тоже.

Когда бы вы начать свой Service в новом процессе, то, что Service наделил отдельной памяти и кучи area.It не будет непосредственно взаимодействовать с основной целью process.For связи вам необходимо использовать AIDL

Для более info проверить это Process and Threads

+1

@AmitYadav вы прочитали мой ответ? Если вы начнете свою Службу в другом процессе, тогда вы не сможете общаться с вашими действиями, которые находятся в другом процессе напрямую. –

+0

. @ Kalyan pvs, что я согласился, что мы должны использовать AIDL, если я запускаю свою службу в отдельном процессе. –

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