Отображение полосы выполнения во время сетевого вызова

Я хочу показать индикатор выполнения во время вызова веб-службы. Я вызывал индикатор выполнения перед вызовом службы, но он вызывается после завершения вызова службы, и я получил ответ.

ProgressDialog dialog = ProgressDialog.show(LogIn.this,"","Loading. Please wait...", true); status=Loginvalid(method,username,psword); //calling the method for making service call 

Но диалог прогресса начинается после получения ответа от службы. Пожалуйста, как я могу исправить эту проблему.

  public class Progress extends AsyncTask<String, Void, Void> { protected void onPreExecute() { ProgressDialog dialog = new MyProgressDialog(MyActivity.this, "Loading.. Wait.."); dialog.show(); } @Override protected Void doInBackground(String... params) { // TODO Auto-generated method stub // do your network connection return null; } protected void onPostExecute(Void unused) { dialog.dismiss(); } } 

Используйте AsyncTask . Это самый эффективный и безболезненный способ отображения диалогового окна прогресса во время вызова веб-службы.

Покажите progressbar в режиме preexecute, вызовите ваш web-сервис в doInBackground и отпустите панель progress onPostexecute.

http://developer.android.com/reference/android/os/AsyncTask.html

Чтобы правильно показать диалог выполнения, он должен быть выполнен в UIThread, а вся другая работа ( service call ) – в другой. См. Пример здесь .