如何在Web服务加载数据时显示进度条?

时间:2012-05-28 04:11:58

标签: android web-services progress-bar

我正在使用从webservice获取n条记录的webservice。我正在使用WS Client来调用webservices。现在我想有一个进度条,显示已加载的n个数据中有多少个。有没有可能实现这一目标?我正在使用AsyncTask在后台调用WS。

2 个答案:

答案 0 :(得分:7)

尝试这样的事情 ,,这基本上显示了在异步任务运行时更新进度条的示例

  public class AndroidAsyncTaskProgressBar extends Activity {

 ProgressBar progressBar;
 Button buttonStartProgress;

 public class BackgroundAsyncTask extends
    AsyncTask<Void, Integer, Void> {

  int myProgress;

  @Override
  protected void onPostExecute(Void result) {
   // TODO Auto-generated method stub
   Toast.makeText(AndroidAsyncTaskProgressBar.this,
         "onPostExecute", Toast.LENGTH_LONG).show();
   buttonStartProgress.setClickable(true);
  }

  @Override
  protected void onPreExecute() {
   // TODO Auto-generated method stub
   Toast.makeText(AndroidAsyncTaskProgressBar.this,
         "onPreExecute", Toast.LENGTH_LONG).show();
   myProgress = 0;
  }

  @Override
  protected Void doInBackground(Void... params) {
   // TODO Auto-generated method stub
   while(myProgress<100){
    myProgress++;
    publishProgress(myProgress);
       SystemClock.sleep(100);
   }
   return null;
  }

  @Override
  protected void onProgressUpdate(Integer... values) {
   // TODO Auto-generated method stub
   progressBar.setProgress(values[0]);
  }

 }


 /** Called when the activity is first created. */
 @Override
 public void onCreate(Bundle savedInstanceState) {
     super.onCreate(savedInstanceState);
     setContentView(R.layout.main);

     buttonStartProgress = (Button)findViewById(R.id.startprogress);
     progressBar = (ProgressBar)findViewById(R.id.progressbar_Horizontal);
     progressBar.setProgress(0);

     buttonStartProgress.setOnClickListener(new Button.OnClickListener(){

   @Override
   public void onClick(View v) {
    // TODO Auto-generated method stub
    new BackgroundAsyncTask().execute();
    buttonStartProgress.setClickable(false);
   }});
 }
}

答案 1 :(得分:1)

要执行此类进度更新,您需要使您的Web服务不完整地返回部分结果。与n个记录一样,webservice可以返回结果n / p,一次,并使用publishProgress方法通知事件线程有关任务的百分比,postEexcute关于完成webservice调用和解析。