Android:无论前一个滴答声尚未完成,计时器都会滴答作响吗?

标签 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 秒,并且 Timer 将再次计时。

所以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);

关于Android:无论前一个滴答声尚未完成,计时器都会滴答作响吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34449647/

相关文章:

android - 在广播接收器中保持通知计数

timer - 在线程组迭代之间添加延迟时间

java - 与 TimerTask、Android 中的延迟参数相关的奇怪 IllegalArgumentException

java - Dropwizard 日晷库每次都会创建一个新的计划对象实例。我们能无论如何避免它吗?像java定时器之类的东西

javascript - HTML5 安卓开发

android - Android应用的性能测试

php - 我怎样才能有效地让我的脚本休眠准确的毫秒数?

c# - 2个计时器,一个落后另一个n秒

java - TimerTask 完成后调用主线程中的方法

android - 单击按钮时进度条延迟加载