Обработчики против асинхронных вызовов в Android

В настоящее время я использую Handlers для вызова методов веб-сервисов, чтобы запустить его в фоновом режиме. Проблема в том, что у него больше времени, чтобы дать ответ, он кажется более дорогим с точки зрения производительности. Теперь я планирую пойти на Async Calls, который будет лучшим? Каковы различия между обработчиками и асинхронными вызовами в Android? Пожалуйста, помогите мне придумать лучшее решение.

Для вашей справки я даю несколько фрагментов кода здесь

signIn.setBackgroundResource(R.drawable.signin_press); changeImage=new Runnable(){ public void run(){ signIn(); } }; signinHandler.post(changeImage); 

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

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

Я бы порекомендовал статью « Безболезненная резьба» для небольшого понимания потоков на Android.

EDIT для дополнительной информации.

Если мы адаптируем код из статьи « Безболезненная резьба», которая была связана, вы можете получить что-то вроде этого.

  new Thread(new Runnable() { public void run() { signIn(); signinHandler.post(new Runnable() { public void run() { //TODO: Something to notify of login complete / continue processing. } }); } }).start(); 

В TODO вам нужно продолжить или оповестить об исполнении, я не знаю, что в настоящее время обрабатывается в signIn() поэтому, если это пересекает поток пользовательского интерфейса, его нужно будет реорганизовать.

AsyncTask использует пул потоков и обработчики внутри. Это не волшебство; См. Источник . Производительность не будет заметно лучше, чем ваши собственные обработчики (за исключением того факта, что использование пула потоков может сэкономить небольшую часть накладных расходов для создания нового потока, но это довольно незначительно по сравнению с продолжительностью типичных вызовов веб-сервисов; За несколько миллисекунд, безусловно, не повлияет на пользователя). Учитывая количество факторов, связанных с созданием веб-запроса, что заставило бы вас думать, что поток / обработчики – это то, что замедляет ваше приложение (в отличие от вашего сетевого подключения, трафика сервера и т. Д.)? Профилирует ваш код назад это утверждение?