2017-08-01 66 views
-1

我有一個AsyncTask,我在onPreExecute()方法中設置消息ProgressDialog。現在我想更新ProgressDialog的消息,方法是從StartUpload()方法doInbackground調用。Upadate progressdialog消息

class performBackgroundtask extends AsyncTask<Void, Void, Void> { 
     // @Override 
     public void onPreExecute() 
     { 


      connectionProgressDialog = new ProgressDialog(ProcessReportsUploadActivity.this); 
      connectionProgressDialog.setCancelable(false); 
      connectionProgressDialog.setCanceledOnTouchOutside(false); 
      connectionProgressDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER); 
      connectionProgressDialog.setMessage("Uploading data..."); 

      connectionProgressDialog.show(); 

     } 

     // @Override 
     public Void doInBackground(Void... params) 
     { 
      try 
      { 

       StartUpload(); 
      } 
      catch (Exception e) 
      { 
       e.printStackTrace(); 

      } 

      return null; 
     } 

     // @Override 
     public void onPostExecute(Void result) 
     { 
      connectionProgressDialog.dismiss(); 
      connectionProgressDialog.cancel(); 

     } 

} 

回答

0

你可以到publishProgress(Progress...).調用執行的時間是不確定的使用後onProgressUpdate 調用UI線程上。此方法用於在後臺計算仍在執行時在用戶界面中顯示任何形式的進度。例如,它可以用來爲進度條設置動畫效果或在文本字段中顯示日誌。

@Override 
    protected void onProgressUpdate(Integer... progress) { 
    // setProgressPercent(progress[0]); 
     //set prograss to your prograss dialoglike this 
     connectionProgressDialog.SetProgress(progress); 
} 
0

使用發佈進展DoInBackground

publishProgress(""+(int)((total*100)/lenghtOfFile)); 

和onProgressUpdate

/** 
* Updating progress bar 
* */ 
protected void onProgressUpdate(String... progress) { 
    // setting progress percentage 
    pDialog.setProgress(Integer.parseInt(progress[0])); 
} 
+0

我試圖更新陸侃酒吧,但publishProgress()被調用一次。我想在StartUpload()方法中聲明的方法中定期更新消息。 – ykumbhar

+0

use publishProgress(「」+(int)((total * 100)/ lenghtOfFile));在你的while循環中 –

+0

如何調用publishProgress(「」+(int)((total * 100)/ lenghtOfFile));在StartUpload()方法中? – ykumbhar