android — В чем разница между IntentService и Сервисом? [Дубликат]" />

В чем разница между IntentService и Сервисом? [Дубликат]

    

На этот вопрос уже есть ответ здесь:

    
  •              Сервис против IntentService                                      10 ответов                          
  •     

Подскажите, пожалуйста, в чем разница между IntentService и Service есть?

121 голос | спросил michael 14 +04002011-10-14T21:28:41+04:00312011bEurope/MoscowFri, 14 Oct 2011 21:28:41 +0400 2011, 21:28:41

8 ответов


0

Короче говоря, Сервис - это более широкая реализация для разработчика, чтобы настроить фоновые операции, в то время как IntentService полезен для операций «запускай и забывай», заботясь о создании и очистке фоновых потоков.

Из документов:

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

IntentService Служба - это базовый класс для IntentService Служб, которые обрабатывают асинхронные запросы (выраженные как Intents) по требованию. Клиенты отправляют запросы с помощью вызовов startService(Intent); служба запускается по мере необходимости, обрабатывает каждое намерение по очереди, используя рабочий поток, и останавливается, когда заканчивается его работа.

Ссылка на этот документ - http://developer.android.com/reference/Android /приложение /IntentService.html

ответил Phix 14 +04002011-10-14T21:55:22+04:00312011bEurope/MoscowFri, 14 Oct 2011 21:55:22 +0400 2011, 21:55:22
0

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

IntentService используется для выполнения определенной задачи в фоновом режиме. После этого экземпляр IntentService автоматически завершает свою работу. Примером его использования может стать загрузка определенного ресурса из Интернета.

Различия

  1. Класс Service использует основной поток приложения, а класс IntentService создает рабочий поток и использует этот поток для запуска службы.
  2. IntentService создает очередь, которая передает одно намерение за раз onHandleIntent(). Таким образом, реализация многопоточности должна осуществляться путем непосредственного расширения класса Service. Классу Service требуется ручная остановка с использованием stopSelf() , Между тем IntentService автоматически останавливается, когда завершает выполнение.
  3. IntentService реализует onBind(), который возвращает null. Это означает, что IntentService не может быть привязан по умолчанию.
  4. IntentService реализует onStartCommand(), который отправляет Intent в очередь и onHandleIntent().

Короче говоря, есть только две вещи, которые нужно сделать, чтобы использовать IntentService. Во-первых, реализовать конструктор. А во-вторых, реализовать onHandleIntent(). Для других методов обратного вызова необходимо вызвать super, чтобы его можно было правильно отслеживать.

ответил Jashan PJ 28 FriEurope/Moscow2012-12-28T17:43:17+04:00Europe/Moscow12bEurope/MoscowFri, 28 Dec 2012 17:43:17 +0400 2012, 17:43:17
0
Служба

: работает в фоновом режиме в вашей системе. Например,

  1. Если вы отправились в отель и передали свой заказ супу на сервер
  2. Сервер получает ваш заказ и отправляет его шеф-повару.
  3. Вы не знаете, как готовить суп на кухне и какие процессы требуются для его приготовления
  4. Как только ваш заказ будет готов, сервер принесет вам суп.

Фоновый процесс: повар готовит суп

IntentService: - это последовательный сервис .. (т.е. когда вы заказываете много продуктов за один раз на сервер, но сервер доставляет эти продукты по одному, а не доставляет их все сразу.

ответил DineshKumar 17 FebruaryEurope/MoscowbFri, 17 Feb 2012 09:16:43 +0400000000amFri, 17 Feb 2012 09:16:43 +040012 2012, 09:16:43
0

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

против

IntentService является подклассом Service который порождает поток для выполнения фоновой работы (нет необходимости создавать новый поток для выполнения операций блокировки процессора).

ответил abbas.aniefa 6 +04002012-10-06T16:02:18+04:00312012bEurope/MoscowSat, 06 Oct 2012 16:02:18 +0400 2012, 16:02:18
0

Сервис

  • Задача без пользовательского интерфейса, но не должна использоваться для длительного задания. Использовать нить в сервисе для длинной задачи
  • вызвать onStartService()
  • Срабатывает из любой темы
  • Работает в основной теме
  • Может блокировать поток main(UI)

IntentService

  • Длинная задача, как правило, не связана с основным потоком, если связь требуется, то она выполняется обработчиком или передачей
  • вызывать через намерение
  • запущен из основного потока ( получено намерение в основном потоке, а рабочий поток создан )
  • Работает в отдельном потоке
  • Мы не можем запустить задачу параллельно, и несколько целей помещаются в очередь в одном рабочем потоке.
ответил Umang Kothari 19 Mayam14 2014, 08:46:34
0

Service: работает в главном потоке, поэтому после ANR (Android не отвечает) вызывается несколько секунд.

IntentService: Service с другим Фоновый поток работает отдельно, чтобы что-то сделать, не взаимодействуя с основным потоком.

ответил Mohamed Hussien 9 +04002013-10-09T17:09:50+04:00312013bEurope/MoscowWed, 09 Oct 2013 17:09:50 +0400 2013, 17:09:50
0

Служба намерений является дочерней по отношению к Службе

IntentService: если вы хотите загрузить несколько изображений в начале открытия вашего приложения. Это однократный процесс, который можно очистить после загрузки всего.

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

ответил sharma_kunal 5 ThuEurope/Moscow2013-12-05T14:25:23+04:00Europe/Moscow12bEurope/MoscowThu, 05 Dec 2013 14:25:23 +0400 2013, 14:25:23

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132