2011-12-28 48 views
-1

你好,我想在後臺線程中執行一些冗長的操作和在平均時間向用戶顯示一個「水平進度條」,並保持更新此作爲後臺操作發生。我知道我可以用的AsyncTask實現這一點,但到現在我只用progressdialog,它是與簡單的多。請幫忙 。的AsyncTask

protected HttpResponse doInBackground(Void... params) 
    { 
     Client.getParams().setIntParameter("http.connection.timeout",5000); 
     try 
     { 

      return Client.execute(loginPost); 
     } 
     catch(Exception e) 
     { 
      return null; 
     } 
    } 

現在,這是我的doInBackground()方法,我怎麼能真正知道正在進行的操作的狀態,以便能夠更新我的進度

+0

如果不知道'Client'類的完整定義,這是不太可能任何人都可以幫助這個。任何答案都可能涉及修改'客戶端'而不是你所顯示的代碼。你的問題也完全不是關於AsyncTask的。 – 2011-12-28 18:13:10

回答

1

隨着AsyncTask,更新進度是不是要複雜得多。移動冗長的操作你的AsyncTask.doInBackground,無論你目前正在打電話pbar.setProgress(percent_done)覆蓋,通話publishProgress(percent_done),並實現AsyncTask.onProgressUpdate(Integer... values)

pbar.setProgress(values[0]); 
+0

好吧,我得到它,但事情是一個progressdialog我不;噸真的有什麼更新用。我只是關閉onPostExecute()對話框。基本上我將一些內容發佈到數據庫並在doInackground方法中獲得http響應。所以我不能真正傳遞一個Integer值到onProgressUpdate。 – Saiesh 2011-12-28 07:12:54

+0

的DoInBackground()方法僅具有一個線,其返回一個HttpResponse對象,並在過程中還執行後。那麼我將如何知道進展? – Saiesh 2011-12-28 07:13:51

+0

如果你只需要知道當後臺任務完成後,'AsyncTask.onPostExecute(結果)'被當這種情況發生調用。您可以在執行該方法時解除對話框。 如果你真的問如何從一些代碼,你沒有提到獲得最新進展,那麼你將不得不至少說你需要從進度更新哪些代碼。可能無法確定數據庫更新有多遠。 – 2011-12-28 07:23:32