Android: 无论前一个滴答声还没有完成,定时器都会滴答作响吗?

Android: Will a Timer tick regardless of the previous tick not yet being finished?

我已经用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 秒,并且计时器本应再次计时。

所以task可能还没有执行完Task,其他tick时间来了。

我想知道计时器是否会不管 TimerTask 操作完成与否!?

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

您可以使用这样的测试代码来验证这一点,并检查 logcat 的输出。

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