安卓:重新启动定时器

3

我用以下代码创建了一个TimerTask:

    Screen_Timer_Task = new TimerTask() {

    @Override
    public void run() {

    runOnUiThread(new Runnable()
    {
            @Override
            public void run()
            {

                    // Do my stuff

            }
    });

    }

    };

然后,我用以下方式启动该TimerTask:

    Screen_Timer.scheduleAtFixedRate(Screen_Timer_Task, 1, 1);

这个正常工作。但在调用之后

    Screen_Timer.cancel();

    Screen_Timer.purge();

它不会重新启动

    Screen_Timer.scheduleAtFixedRate(Screen_Timer_Task, 1, 1);

应用程序崩溃了!!
2个回答

0
public void start_my_timer()
{

    Screen_Timer_Task = new TimerTask() {

        @Override
        public void run() {


                runOnUiThread(new Runnable()
                {
                    @Override
                    public void run()
                    {
                                // Do my stuff
                    }
                });

        }

    };

    Screen_Timer.schedule(Screen_Timer_Task, 1, 1);

}

2
每次创建新的 Timer - michal.luszczuk
是的,那就是解决方案。非常感谢! - Jan Knoblauch
不行,计时器已经重新启动但线程仍将保持活动状态。 - Cristian Zumelzu

0

来自文档timerTask的任务可能只运行一次。

如果您想要再次使用它,必须再次创建TimerTask对象。

同时,因为cancel():"取消计时器和所有已安排的任务。如果当前有正在运行的任务,则不受影响。不能在此计时器上安排更多任务。后续调用不起作用。",所以也必须再次创建Timer


不,它没有生效。我将其放在公共无返回值函数中并调用它,但第二次运行时,应用程序崩溃了。 - Jan Knoblauch
展示你所获取的LogCat。 - michal.luszczuk
我通过局域网连接将应用程序发送到我的设备,因此我没有LogCat。 - Jan Knoblauch
展示一下你现在是如何每次重新创建TimerTask的。 - michal.luszczuk

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接