两次调用计时器会使我的应用程序崩溃:Android

时间:2013-03-23 03:02:08

标签: android

我正在尝试开发一个小型Android应用程序。在那个应用程序中我需要使用Timer控件,它将在按钮点击时触发。我得到的问题是,第一个计时器任务调用工作正常,但当我再次调用它时,我的应用程序崩溃了。用于计时器任务的代码是:

Timer timer = new Timer();
TimerTask refreshRam;
final Handler handler = new Handler();
refreshRam = new TimerTask() 
    {
        public void run() 
        {
            handler.post(new Runnable() 
            {
                public void run() 
                {
                    txtFreeRam.setText(String.valueOf(getFreeRam()).toString());
                }
            });
        }}; 

    }


timer.schedule(refreshRam, 400);

我只想在点击按钮时调用我的计时器任务。不应该重复...... 感谢

2 个答案:

答案 0 :(得分:0)

使用timer.scheduleatfixedrate而不是schedule

timer.scheduleAtFixedRate(refreshRam,400,5000);

答案 1 :(得分:0)

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

java.lang.IllegalStateException: TimerTask is scheduled already

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

为了重新安排定时器,您需要每次只创建一个新的实例。如下:

.
.
.

//first time; works fine!
timer = new Timer();
refreshRam = new TimerTask() { ... }
timer.schedule(refreshRam, 400);


//second time; also works fine!
//be sure to terminate the timer task that is running by calling timer.cancel()
timer.cancel();
timer = new Timer();
refreshRam = new TimerTask() { ... }
timer.schedule(refreshRam, 400);