点击按钮后,我正在调用TimerTask(m_timer):
m_timer.schedule(m_progressUpdater,0,500);
开始我的跑步方法:
@Override
public void run() {
//do some stuff
progressBar.setProgress(currentProgress);
if (progress >= 100) {
handler.post(new Runnable() {
@Override
public void run() {
CompleteTask();
}
});
}
}
我可以称之为一次,它完美无缺。当我再次调用它时,我的应用程序停止响应。我在想我需要在CompleteTask()方法中取消任务,但我已经尝试取消TimerTask和Timer,它仍然会崩溃。任何人都知道问题可能是什么?
答案 0 :(得分:0)
您是否尝试过为第二次调用创建新的TimerTask实例?顺便说一句,不要取消计时器,否则它将取消其所有任务。日志说了什么?
答案 1 :(得分:0)
当您重新安排计时器时,它会抛出:
java.lang.IllegalStateException: TimerTask is scheduled already
似乎你只能使用一次计时器。
为了重新安排定时器,您需要每次只创建一个新的实例。如下:
// if you have already started a TimerTask,
// you must(?) terminate the timer before rescheduling it again.
if(m_timer != null)
m_timer.cancel();
m_timer = new Timer();
m_progressUpdater = new myTimerTask();
m_timer.schedule(m_progressUpdater, 0, 500);