2013-05-08 57 views
0

我正在运行异步任务。 在doinbackground方法中,我有一个方法返回int或其他值可能是布尔值的某些时间。增加计数器虽然doinbackground正在运行异步任务

我也想增加我的进度条,因为它进行完成。 问题是如何保持柜台的轨迹? 有时,数据库查询可能需要一些时间,有时候会更快。 :)

public void getAllSchoolsSearchResult(InputBean nb , SearchLogic mLogic){ 

    mSRLogic=mLogic; 
    new AsyncTask<Void, Integer, List<SResultModel>>() { 
     @Override 
     protected void onPreExecute() { 
      super.onPreExecute(); 
      mProgressDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER); 
      mProgressDialog.setProgress(0); 
      mProgressDialog.setMax(100); 
      mProgressDialog.show(); 
     } 

     @Override 
     protected List<SResultModel> doInBackground(
       Void... paramArrayOfParams) { 

      progressbar_Status=0; 
      while(progressbar_Status<100){ 

       progressbar_Status += 1; 

       publishProgress(progressbar_Status); 

      } 
      if(ConnectionProvider.checkConnection()==false){ 
       return null; 
      } 
      return SearchResultHandler.searchStudent(searchAllSchools); 
     } 

     @Override 
     protected void onPostExecute(List<SResultModel> result) { 
      super.onPostExecute(result); 

      if(mProgressDialog!=null&&mProgressDialog.isShowing()){ 
       mProgressDialog.dismiss(); 
      } 

     } 

     @Override 
     protected void onProgressUpdate(Integer... values) { 
      super.onProgressUpdate(values); 

      mProgressDialog.setProgress(values[0]); 

     } 






    }.execute(); 
} 

回答

1

publishProgress不能像这样使用。

从你的代码中,你显示进度条(无所事事),然后当它达到100%时,你请求学生。

的publishProgress应该是

SearchResultHandler.searchStudent() 

内取决于它是如何实现的。如果它内部没有循环,您将无法发布任何进度。

在这种情况下,使用一个不确定的进度对话框,并在doInBackground

protected void onPreExecute() { 
    super.onPreExecute(); 
    mProgressDialog.setIndeterminate(true); 
    mProgressDialog.show(); 
} 


protected List<SResultModel> doInBackground(Void... paramArrayOfParams) { 
    if(!ConnectionProvider.checkConnection()) return null; 
    return SearchResultHandler.searchStudent(searchAllSchools); 
} 
+0

怎么样在progressupdate做我需要改变它? – Bora 2013-05-08 12:29:04

+0

进度条没有增加值。 – Bora 2013-05-08 12:34:38

+1

不,不确定对话框中没有任何进度,只是一个等待对话框,因为时间估计是未知的。 – Corbella 2013-05-08 12:41:16

2

在一个未知的时间的情况下,你或许应该使用不确定的进度条,你可以通过android:indeterminate布局属性或setIndeterminate方法设置。

如果你知道你在做多少操作,你可以在asynctask中保存一个成员变量,或者在doInBackground方法中保存一个局部变量。

+0

嗨,我使用的这个工作什么都不做,但0%没有相对于增加的进步更新 – Bora 2013-05-08 12:35:27

相关问题