繁体   English   中英

Android Java Timer()

[英]Android Java Timer()

由于其准确性,我使用Timer(),但其工作原理与PostDelayed Handler相同。 它只被调用一次。 这是计时器代码:

    public void setWFT() {
        WFT = new Timer();
        WFT.schedule(new TimerTask() {          
            @Override
            public void run() {
                WFTTimerMethod();
            }
        }, 60000); // 60 seconds delay
    }

    private void WFTTimerMethod() {
        this.runOnUiThread(Timer_Tick);
    }

    private Runnable Timer_Tick = new Runnable() {
        public void run() {
            // My commands here
        }
    };

计时器启动后,仅在60秒后调用一次run()。 有时,我必须取消计时器以更新延迟(替换“ 60000”值)。 要再次启动计时器,我只需通过使用新的延迟值再次调用WFT()来重新创建计时器。

问题是,当我使用以下方法取消计时器时:

WFT.cancel();
WFT.purge();

计时器无法启动。 run()在应该执行的时候不执行。 所以我的问题是我要使用cancel()和purge()还是只使用cancel()?

谢谢

purge() 的Java API中

大多数程序将不需要调用此方法。 它设计用于少数应用程序,该应用程序可取消大量任务。 调用此方法会以时间换取空间:该方法的运行时间可能与n + c log n成正比,其中n是队列中的任务数,而c是已取消任务的数。

所以你只需要调用cancel()

cancel()文档中:

不能在此计时器上安排更多任务。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM