Intereting Posts
Создать индексированный столбец в sqlite Выберите между ArrayAdapter и SimpleAdapter Адаптер с hasStableIds с использованием GUID или строк в качестве идентификаторов Не удалось запустить виртуальное устройство Genymotion – виртуальный абонентский хост Ethernet-адаптер не удалось запустить Android Studio – удалить модуль – IncorrectOperationException: не следует изменять внешнюю команду документа или отменять прозрачность OnPrepareActionMode не вызывается при создании ActionMode Как показать описание подсказки в Android Studio? Файл Thumbs.db в папке res / drawable / hdpi Как показать изображение в полноэкранном режиме? Linux Ubuntu Android SDK менеджер не запускается – андроид: java: не найден Не удалось запустить Activity ComponentInfo {…}: java.lang.NullPointerException Установить значок переполнения меню на белый Кнопка Android Studio AVD Manager отключена Возможно ли переход от общего элемента в представление в RecyclerView? АБР не отвечает. Вы можете подождать больше или убить «adb.exe» … windows 8

В чем разница между сервисом, намерением службы в android?

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

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

Solutions Collecting From Web of "В чем разница между сервисом, намерением службы в android?"

1. Разница между сервисом и IntentService

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

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

 onHandleIntent(Intent intent) 

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

IntentService на документацию , вы можете увидеть, что делает IntentService для вас:

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

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

2. Разница между AsyncTask и службой

Это две разные концепции.

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

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

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

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

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

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

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

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