2012-04-23 74 views

回答

1

當您創建的AsyncTask類,您可以指定的參數,進度類型和結果:

private class MyTask extends AsyncTask<ParamType, ProgressType, ResultType> { ... } 

如果你想使用進度值更新進度條,我建議使用整型,所以你的類聲明如下所示:

private class MyTask extends AsyncTask<ParamType, Integer, ResultType> { ... } 

以下調用應該從什麼地方來doInBackground()製作:

publishProgress(progress_value); // progress_valus is integer 

和你onProgressUpdate()成員將是這樣的:

protected void onProgressUpdate(Integer... values) { 
    super.onProgressUpdate(values); 
    dialog.setProgress(values[0]); // dialog is the ProgressDialog 
} 
1

你的意思是onProgressUpdate()

進度值是任何你想要的。如果要顯示百分比完整進度欄,則可以使用0到100之間的整數。如果你想顯示一個文本消息,然後傳遞一個字符串。

在您的後臺操作的某些點上,您可以調用publishProgress()任何您想要發送的值(整數,字符串等)。這將在主線程中傳遞給您的onProgressUpdate()方法,以便您可以在UI中顯示值。

如果您知道需要完成多少工作,並且通過操作有多遠(也許您的後臺操作在循環中運行),那麼在循環的每次迭代中,您都可以將進度顯示爲工作量的百分比留下來做。

如果後臺任務包含一堆不同的操作,那麼也許你想發送一條消息,如「加載數據」,「準備報告」等。

完全取決於你決定發送什麼值,以及如何計算它們。

+0

如何傳遞價值,以及如何? 。以及a如何控制進度值以涵蓋後臺進程的長度? – Adham 2012-04-23 10:29:13