调用两次时Android TimerTask崩溃

时间:2011-10-18 00:49:18

标签: android timer timertask

点击按钮后,我正在调用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,它仍然会崩溃。任何人都知道问题可能是什么?

2 个答案:

答案 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);