の働きを練習していて、AsyncTask
その目的で機能を使いたかったのonProgressUpdate
です。現在、私のプログラムには、ユーザーが入力(終了TextView
後に表示されるAsyncTask
)とタイマー(Thread.sleep()
で時間を決定するAsyncTask
)を選択できるUIがあります。
私がやりたいことは...ユーザーが5の時間を選択した場合です。その後、1秒ごとにUIに通知を送信したいと思います(進行状況ダイアログが呼び出される場所)... 5分の1の進行状況を示します... 2/5 ... 3/5 .
これまでの進捗状況は次のとおりです。
public class ViewFiller extends AsyncTask<String, Integer, String> {
@Override
protected String doInBackground(String... input) {
// TODO Auto-generated method stub
try {
int time;
if (input[1].equalsIgnoreCase("")) {
time = 0;
} else {
time = Integer.parseInt(input[1]) * 1000;
for (int i = 1; i <= time / 1000; i++) {
publishProgress(i, time);
}
Thread.sleep(time);
}
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return input[0];
}
@Override
protected void onPostExecute(String result) {
// TODO Auto-generated method stub
super.onPostExecute(result);
execute.setText("Execute");
progress.dismiss();
tvInput.setText(result);
}
@Override
protected void onPreExecute() {
// TODO Auto-generated method stub
super.onPreExecute();
execute.setText("Running...");
displayProgress("Updating field ... ");
// Start the progress dialog
progress.show();
}
@Override
protected void onProgressUpdate(Integer... values) {
// TODO Auto-generated method stub
super.onProgressUpdate(values);
progress.setMessage("Updating field ... " + values[0] + " of "
+ values[1] / 1000);
}
}
現在の実装は私5 of 5
に直接与えるだけです。誰かが私に解決策を提案できますか?