В чем разница между сервисом, намерениемСервис в андроиде?

В чем разница между Service и IntentService в Android?

В чем разница между AsyncTask и IntentService в Android?


person vijaycaimi    schedule 16.07.2015    source источник


Ответы (2)


<сильный>1. Разница между Сервисом и IntentService

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

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

onHandleIntent(Intent intent)

где вы можете управлять всеми входящими запросами.

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

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

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

<сильный>2. Разница между AsyncTask и сервисом

Это два разных понятия.

Сервис: можно рассматривать как действие без интерфейса. Подходит для длительных операций.

AsyncTask: – это особый класс, обертывающий рабочий поток (выполняющий фоновые операции), облегчающий взаимодействие с потоком пользовательского интерфейса без непосредственного управления потоками или обработчиками.

person GVillani82    schedule 16.07.2015
comment
Здесь есть хорошее объяснение stackoverflow.com/a/15772151/1533670 - person Yohanes AI; 10.05.2017
comment
Это объяснение приятно, но если бы вы могли более подробно остановиться на AsyncTask (особенно на недостатках), было бы лучше. - person Mike Vella; 23.11.2017
comment
О AsyncTask можно многое сказать, и для этого есть документация. Я старался быть кратким, просто указав на различия с Service - person GVillani82; 23.11.2017

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

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

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

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

Сервис vs IntentService

В чем разница между IntentService и Service ?

person Saurabh K. Sharma    schedule 16.07.2015