2013-07-25 4 views
2

Я не могу позвонить в AsyncTask и IntentService. Я разрабатываю приложение для Android, которое имеет активность регистрации пользователя. Когда пользователь вводит имя пользователя в процессе регистрации, я должен проверить, уже ли выполнено имя пользователя или нет, отправив HTTP-запрос на сервер. Ответ с сервера - это объект JSON с именами пользователей.AyncTask и IntentService, когда использовать?

Пожалуйста, помогите мне в принятии вызова на дизайн фона имя пользователя проверить AsyncTask/IntentService с плюсами и минусами.

ответ

3

Если вы используете AsyncTask, вам здесь не нужен IntentService. Если вы разместите свой код, мы можем показать вам, что вы можете делать неправильно, но сделать HTTP-запрос в потоке с помощью AsyncTask довольно прямолинейно.

Вот хороший пример того, как использовать его для этой цели: http://androidresearch.wordpress.com/2012/03/17/understanding-asynctask-once-and-forever/

В основном AsyncTask это просто фантазии обертки темы, которая позволяет дерзить нить дисплея. Вы можете добиться того же результата с помощью Thread, который выполняет ваш HTTP-вызов, и Runnable, который обновляет ваш дисплей, который ваш поток может вызывать с помощью Handler.

1

от этой полезной answer

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

так что это предложение также пойдет с вами.

Кроме того, я предлагаю вам заглянуть в android volley

1

IntentService и AsyncTask не сравнимы в любом случае.

IntentSerive

  • Android компонент требует регистрации в AndroidManifest.
  • Usese рабочий шаблон очереди. Несколько запросов помещаются в очередь и обрабатываются один за другим.
  • Использует собственную рабочую нить для обработки.
  • Асинхронный: для запуска, отправки и намерения система Android запрашивает локальную систему, чтобы найти соответствующий компонент службы. Это означает, что для запуска IntentService может потребоваться некоторое время.
  • Он зарегистрирован в AndroidManifest, означает, что с разрешенными разрешениями другие приложения смогут получить к нему доступ через Intent.
  • Подкласс контекстного

AsyncTask

  • Просто другая фантазия Java класса
  • Должен быть создан и выполнен из основного потока.
  • Использует фоновый поток для работы.
  • Недоступно за пределами его сферы java.
  • Выполнить несколько раз, требуется несколько экземпляров
  • Удобного дизайн шаблона, чтобы сделать любую фоновую задачу для обновления пользовательского интерфейса
  • Вы должны передать контекст в качестве параметра, чтобы использовать его,
  • Выполнения запускаются при вызове пользователя выполнения(). Не требуется разрешение на намерение.
+0

Я предполагаю, что оба выполняются асинхронно, правильно? Почему это не сопоставимо? – geekgugi

+0

Я добавил в строку в конце на Asyctask. Сравнение и бенчмаркинг работают лучше, когда, когда оба предназначены для одной цели. Предположим, что Service vs IntentService или AsyncTask против AsyncTaskLoader. – minhaz

+0

Вы хотите сказать, что цели, которые могут быть достигнуты с помощью AsyncTask/Service, не могут быть достигнуты с помощью счетной части? – geekgugi

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