Каква е разликата между услуга, intentService в android?

Каква е разликата между 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(), което връща нула.
  • Осигурява изпълнение по подразбиране на onStartCommand(), което изпраща намерението към работната опашка и след това към вашето onHandleIntent() изпълнение.

Така че, ако имате нужда от повече контрол, можете да използвате класа Service, но често за проста услуга най-доброто решение е IntentService.

2. Разлика между AsyncTask и Service

Те са две различни понятия.

Услуга: може да бъде предназначена като дейност без интерфейс. Подходящ е за продължителни операции.

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); услугата се стартира при необходимост, обработва всяко намерение на свой ред с помощта на работна нишка и се спира сама, когато работата й свърши.

Услуга срещу IntentService

Каква е разликата между IntentService и услуга ?

person Saurabh K. Sharma    schedule 16.07.2015