0

我在单击按钮时调用我的 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,但它仍然崩溃。有谁知道可能是什么问题?

4

2 回答 2

0

您是否尝试为第二次调用创建新的 TimerTask 实例?顺便说一句,不要取消计时器,否则它将取消所有任务。日志说了什么?

于 2011-10-18T01:50:32.997 回答
0

当您重新安排计时器时,它会抛出:

java.lang.IllegalStateException: TimerTask is scheduled already

似乎您只能使用一次计时器。

为了重新调度 Timer,您只需每次都创建它的一个新实例。如下所示:

// 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);
于 2017-06-04T13:38:40.493 回答