2015-04-10 4 views
0

Я начинаю программировать на Android, и когда я узнаю что-то об услуге, проблема стала. Мы все знаем, что поток пользовательского интерфейса не может выполнять многолетний процесс, поэтому мы должны запускать их в новом потоке, и сразу же мы узнали, что что-то о обработчике AsyncTask и службе даже отправляет BroadCast, когда задача завершена. Однако я не уверен, когда их использовать.разница между asyntask и службой в android

Например, мы часто используем активность для входа в систему, когда данные должны быть опубликованы, возможно, сообщение на удаленный сервер, это может стоить долгое время, мы не можем что-то написать в LoginActivity, возможно, в AsyncTask или службе сделать это. Но какой из них лучше?

+4

Возможный дубликат [Разница между сервисом, задачами Async и Thread?] (Http://stackoverflow.com/questions/3264383/difference-between-service-async-task-thread) – Fahim

ответ

0

По общему правилу:

  • Служба работает в фоновом режиме и выполняет некоторые (периодические) работу вас. Например, если вы хотите получать новости из REST-API каждые 15 минут и информировать пользователя в приложении или с уведомлением , чем использовать службу.
  • AsyncTask - это выделенный поток для трудоемких заданий до , предотвращающий блокировку потока пользовательского интерфейса. Например, для получения новостей после пользователь нажимает кнопку «Получить новости».

В вашем случае важно ожидание пользователя. Пользователь пытается войти и ждет в действии для ответа сервера. Вы должны отправить запрос на сервер в AsyncTask и, например, Покажите пользователю экран ожидания до тех пор, пока не появится ответ («Попробуйте войти»). Таким образом, пользовательский интерфейс все еще реагирует, но пользователь четко знает, что он должен ждать ответа.

+0

так ясно, что, спасибо! –

0

Служба работает постоянно на фоне вашего устройства.

AsynkTack запускается, когда вам это нужно, и выполняется в фоновом режиме. Когда это будет сделано, поток будет уничтожен.

+0

Таким образом, служба пытается обеспечить что приложение всегда нужно, и AsyncTask дает некоторый результат с меньшим временем, чем Служба? –

+0

На самом деле обычно используется служба для выполнения задачи, всегда работающей в фоновом режиме, в то время как асинктас - это пунктуальная задача. Отметьте это сообщение, это очень хорошо объяснено: http://stackoverflow.com/questions/3264383/difference-between-service-async-task-thread – Maxouille

0

Услуги - это компонент приложения, который может выполнять длительные операции в фоновом режиме и не предоставляет пользовательский интерфейс. Служба - это задача без UI.Runs всегда в основном потоке и также может блокировать main thread. Мы можем начать сервис по вызову метода startService()

AysnTask - класс AsyncTask позволяет запускать команды в фоновом режиме и синхронизировать снова с основным потоком. Он также сообщает о ходе выполнения задач. Используется для задачи параллельно. Мы запускаем ее, вызывая метод execute(). Wrok на рабочем потоке и запускается из основного потока. Он не может работать в цикле.

Смежные вопросы