2014-12-03 6 views
4

Мне был задан этот вопрос в интервью сегодня.Как работает сервис в фоновом режиме - Android

Что такое услуга? На что я ответил Service является базовым компонентом Android, у которого нет пользовательского интерфейса и который работает в фоновом режиме.

Выполняется ли обслуживание на главной теме? No

Тогда как это работает в фоновом режиме? .......

Я был пустым. Может кто-нибудь объяснить, как служба работает в фоновом режиме, если она работает в потоке ui.

Спасибо.

+0

услуги, выполняемые по ui/main thread. – Blackbelt

+0

@Blackbelt u означает сказать, что они не работают в фоновом режиме? – ik024

+0

в фоновом режиме что-то еще. Я полагаю, что документация означает * background * - это способность служб работать без взаимодействия с пользователем, и даже если все действия приостановлены – Blackbelt

ответ

2

Служба работает по интерфейсу. Чтобы запустить служебную задачу «в фоновом режиме», вам необходимо, чтобы в этой службе появился новый поток. «В фоновом режиме» в контексте Сервиса можно рассматривать как «может работать без UI», но это не значит, что он работает в своем потоке.

+1

hmm u r right. Но все же они не должны были использовать слово «фон» – ik024

+0

. Что хорошего мне делает Сервис, если он работает в потоке пользовательского интерфейса? Если мне нужно создать новый поток, почему бы мне просто не создать поток в главной программе, и все? Каковы преимущества услуги в этом случае? – Cookienator

+0

Преимущество службы заключается в том, что она может работать без видимой активности (UI, View), чтобы пользователь мог покинуть ваше приложение и перейти на главный экран, и операция будет продолжаться. Когда он закончится, вы также сможете обработать результат и, например, хранить его где-нибудь. В случае запуска Thread в Activity активность будет уничтожена, и вы потеряете (или протекаете) контекст, который может привести к сбоям/исключениям из памяти. –

2

Цитата official source:

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

«UI thread» - это в основном основной поток, который использует ваше приложение, и который запускает его пользовательский интерфейс. Он не ограничивается только запуском интерфейса.

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