我必须做这样的事情:
在for循环内显示进度对话框时,我遇到了问题。
我尝试了TimerTask的许多变体并运行。这是我的示例演示应用程序的最新代码。
//In function of showing progress
for (int i = 0; i < myInfo.size() ; i++){
Timer timer = new Timer();
timer.scheduleAtFixedRate(new ProgressTask(timer), 1000, 1000);
}
//Here is the ProgressTask
public class ProgressTask extends TimerTask {
Timer timer;
public ProgressTask (Timer timer){
this.timer = timer;
}
@Override
public void run() {
progressStatus = progressStatus + 10;
progressBar.setProgress(progressStatus);
if (progressStatus == 100) {
timer.cancel();
}
}
}
结果是:我只看到进度对话框的第一条记录。尽管它为所有记录执行for循环,但在计划任务或运行线程或计时器时我还是犯了一些错误。有人可以帮我解决代码中的错误吗?
编辑:
Here是整个活动的代码,如果有帮助的话。
答案 0 :(得分:0)
您的进度任务将同时执行,因此您只会获得一个进度。因此,请调整您的延迟时间以一一执行。
尝试一下
for (int i = 0; i < 10 ; i++){
Timer timer = new Timer();
timer.scheduleAtFixedRate(new ProgressTask(timer), i * 1000, 1000);
}
public class ProgressTask extends TimerTask {
Timer timer;
public ProgressTask (Timer timer){
this.timer = timer;
}
@Override
public void run() {
progressStatus = progressStatus + 10;
progressBar.setProgress(progressStatus);
timer.cancel(); //Cancel timer all time bcoz you create new timer everytime.
}
}