0

我正在尝试开发一个小型 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);

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

4

2 回答 2

0

使用 timer.scheduleatfixedrate 而不是 schedule

timer.scheduleAtFixedRate(refreshRam,400, 5000);

于 2013-03-23T03:15:18.043 回答
0

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

java.lang.IllegalStateException: TimerTask is scheduled already

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

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

.
.
.

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