2011-02-10 2 views
4

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

ProgressDialog dialog = ProgressDialog.show(LogIn.this,"","Loading. Please wait...", true); 

status=Loginvalid(method,username,psword); //calling the method for making service call 

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

+1

Спасибо всем ... Моя проблема решается с помощью AsyncTask. Чтобы передать контекст, я создал метод setter в моем подклассе AsyncTask, а также предоставил конструктор. Поэтому из моего класса активности я сначала вызвал сеттер, а затем метод execute(). Теперь он отлично работает. – avdroidDev

ответ

3
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(); 

     } 

    } 
0

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

2

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

показать прогресс в режиме предварительного запуска, вызвать ваш веб-сервис в doInBackground и отбросить индикатор progress onPostexecute.

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

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