如何在一定时间后停止计时器?

6
我有一个安卓应用程序,其中有一个计时器来运行一个任务:
time2.scheduleAtFixedRate(new TimerTask() {
        @Override
        public void run() {
            sendSamples();
        }
    }, sampling_interval, sending_interval);

假设sampling_interval为2000,sending_interval为4000。在这个应用程序中,我将一些传感器的读数值发送到服务器。但是我想在10000(10秒)后停止发送。你应该怎么做?

1
https://dev59.com/m2bWa4cB1Zd3GeqPTiAQ - thar45
1个回答

9

尝试

        time2.scheduleAtFixedRate(new TimerTask() {
            long t0 = System.currentTimeMillis();
            @Override
            public void run() {
              if (System.currentTimeMillis() - t0 > 10 * 1000) {
                  cancel();
              } else {
                  sendSamples();
              }
            }
...

需要考虑一件事情,那就是 sendSamples() 方法是否会超过一个调度间隔的时间,如果确实会超时,那么你希望代码如何运行。如果你希望无论如何都执行10次迭代,那么可以使用计数器来替代 currentTimeMillis。如果你不希望在经过了那么长时间后重新开始,那么这是一个好的解决方案。 - ash

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