Android:无论先前的滴答还没有完成,定时器是否会打勾?

时间:2015-12-24 08:30:40

标签: android timer timertask

我已经使用Timer每30秒执行一次网络操作。

    Timer myTimer_30sn_send_alive = new Timer();
    myTimer_30sn_send_alive.schedule(new TimerTask() {
        @Override
        public void run() {
            // Send alive message on network
            // ....
        }

    }, 5000, 30 * 1000); // 30sn

如果网络超时为40秒且计时器打算再次打勾。

因此任务可能无法完成任务,另一个滴答时间到来。

我想知道,无论 TimerTask操作完成与否,计时器都会打开吗?

1 个答案:

答案 0 :(得分:1)

答案很简单:不,不是。虽然TimerTask在它自己的线程中运行,但在另一个tick结束之前它不会启动新的tick。

您可以使用这样的测试代码对此进行验证,并检查logcat是否输出。

    Timer testTimer = new Timer();
    testTimer.schedule(new TimerTask() {
        @Override
        public void run() {
            Log.d("Test", "Tick: " + SystemClock.elapsedRealtime());
            SystemClock.sleep(10000);
        }
    }, 0, 5000);