Подтвердить что ты не робот

В чем разница между IntentService и службой?

Не могли бы вы помочь мне понять, какова разница между IntentService и Service?

4b9b3361

Ответ 1

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

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

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

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

Обратитесь к этому документу - http://developer.android.com/reference/android/app/IntentService.html

Ответ 2

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

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

Различия

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

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

Ответ 3

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

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

фоновый процесс: шеф-повар, делающий суп

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

Ответ 4

См. Tejas Lagvankar сообщение об этой теме. Ниже приведены некоторые ключевые различия между Сервисом и IntentService и другими компонентами.

введите описание изображения здесь

Ответ 5

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

против

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

Ответ 6

Сервис

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

IntentService

  • Длительная задача обычно не связана с основным потоком, если требуется общение, а затем выполняется обработчиком или широковещательной рассылкой
  • Вызвать через намерение
  • вызванный из основного потока (Intent получен в основном потоке, и рабочий поток отключен)
  • Работает в отдельном потоке
  • Мы не можем запускать задачу параллельно, и несколько намерений находятся в очереди на одном рабочем потоке.

Ответ 7

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

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

Ответ 8

Различия

  • Сервисный класс использует основной поток приложения, а IntentService создает рабочий поток и использует этот поток для запуска службы.
  • IntentService создает очередь, которая передает одно намерение за раз в onHandleIntent(). Таким образом, реализация многопоточного потока должна выполняться путем непосредственного распространения класса сервиса.
  • Для класса обслуживания требуется ручная остановка с использованием stopSelf(). Тем временем IntentService автоматически останавливается, когда в очереди нет намерений.
  • IntentService реализует onBind(), который возвращает null. Это означает, что IntentService не может быть привязан по умолчанию.
  • IntentService реализует onStartCommand(), который отправляет Intent в очередь и в onHandleIntent().

Ответ 9

Сервис

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

IntentService

Это подкласс Сервиса, который использует рабочий поток для обработки всех начальных запросов по одному за раз. Это лучший вариант, если вы не требуете, чтобы ваша служба обрабатывала несколько запросов одновременно. Все, что вам нужно сделать, это реализовать onHandleIntent(), который получает намерение для каждого запроса на запуск, чтобы вы могли выполнять фоновое задание.

Различия

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

Ответ 10

Услуга Intent является дочерней функцией службы

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

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