2013-05-08 83 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

相關問題