1
我有一個簡單的函數,從0到5000計數,並與這些數字做數學計算,我想顯示進度條顯示它當前的計數位置(每次迭代大致需要1第二)。正在執行功能時刷新屏幕
我的進度如下
<TableRow
android:visibility="gone"
android:id="@+id/progress_bar_row" >
<ProgressBar
android:id="@+id/progress_bar"
style="?android:attr/progressBarStyleHorizontal"
android:layout_width="wrap_content"
android:layout_span="2"
android:layout_height="wrap_content" />
</TableRow>
當用戶按下按鈕我的功能啓動時,它使該行可見,我想刷新進度與每個迭代。我的功能如下
private void find_number(View v)
{
String response = "";
TextView answer = (TextView)findViewById(R.id.answer);
TableRow progress_bar_row = (TableRow)findViewById(R.id.progress_bar_row);
ProgressBar progress_bar = (ProgressBar)findViewById(R.id.progress_bar);
progress_bar.setProgress(0);
progress_bar.setMax(5000);
progress_bar_row.setVisibility(View.VISIBLE);
answer.setText("");
for(int i = 0; i <= 5000; i++)
{
progress_bar.setProgress(i);
// a lot of heavy math is being performed here and answer is stored inside response string
}
//progress_bar.dismiss();
progress_bar_row.setVisibility(View.GONE);
answer.append(response);
}
我似乎無法弄清楚刷新屏幕的方法。我探討並得到了一個建議,使用線程和處理程序,我從來沒有使用過線程,也不知道如何改變我的函數以適應線程的使用。或者,如果沒有使用任何線程和簡單的調用某種刷新功能的簡單方法,我也會很感激。任何幫助或指導將非常受歡迎。在此先感謝
確切位置在哪裏我推呢?我是否將其創建爲我的活動中的一個子類,並通過.execute命令執行?我試圖把它放在我的按鈕函數被調用的地方,什麼都沒有發生。 – Quillion 2012-03-12 03:09:11
是的,你創建一個子類,在find_number()函數中,你只能調用(new YourTask())。execute(「test」)。注意,你應該在類中聲明_progress_bar_ param作爲私有參數。 – NamLe 2012-03-12 03:30:12
謝謝,暫時我會用這個,現在開始學習線程。 – Quillion 2012-03-12 03:48:47