Ответ 1
1. Разница между сервисом и IntentService
Сервис. Это базовый класс для служб Android, который вы можете расширить для создания любого сервиса. Поскольку служба запускается внутри потока пользовательского интерфейса, для этого требуется создать рабочий поток.
IntentService: это подкласс Service
, который упрощает вашу работу. Он работает уже в рабочем потоке и может получать асинхронные запросы. Таким образом, вам не нужно создавать его вручную или беспокоиться о синхронизации. Вы можете просто расширить его и переопределить метод:
onHandleIntent(Intent intent)
где вы можете управлять всеми входящими запросами.
Взглянув на документацию, вы можете подробнее узнать, что делает IntentService
для вас:
- Создает рабочий поток по умолчанию, который выполняет все намерения, переданные в
onStartCommand()
, отдельно от основного потока вашего приложения. - Создает рабочую очередь, которая передает одно намерение за раз в вашу реализацию
onHandleIntent()
, поэтому вам не придется беспокоиться о многопоточности. - Останавливает службу после того, как все начальные запросы были обработаны, поэтому вам не нужно вызывать
stopSelf()
. - Предоставляет реализацию по умолчанию
onBind()
, которая возвращает null. - Предоставляет реализацию
onStartCommand()
по умолчанию, которая отправляет намерение рабочей очереди, а затем в вашу реализациюonHandleIntent()
.
Итак, если вам нужно больше управления, вы можете использовать класс Service
, но часто для простой службы лучшим решением является IntentService
.
2. Разница между AsyncTask и службой
Это два разных понятия.
Сервис: может быть предназначен как действие без интерфейса. Он подходит для длительных операций.
AsyncTask: - это особый класс, который обертывает рабочий поток (выполняет фоновые операции), облегчая взаимодействие с потоком пользовательского интерфейса, без непосредственного управления потоками или обработчиками.