呼叫功能间隔为5秒,然后是4秒,然后是3等

时间:2016-01-16 00:44:48

标签: java android

我有一个函数foo()

我想每隔5秒拨打foo(),然后在" X" foo()的呼叫每4秒呼叫一次。在另一个" X"每隔3秒调用foo(),直到foo每秒调用一次。

我还需要能够随时停止呼叫foo。

我查看了其他Stack Overflow帖子,但没有找到任何允许我动态更改调用间隔的内容。

我该怎么办?

2 个答案:

答案 0 :(得分:1)

查看Java中的TimerTimerTask类。您可以安排TimerTask并让任务决定下次安排它的时间。任务安排自己。

这样您就可以动态决定下一个执行间隔。

import java.util.Timer;
import java.util.TimerTask;

public class Main {

    public interface FooService {
        public void foo();
    }

    public static class DelayCalculator {
        public long nextTime() { // ... };
    }
    public static class FooTask extends TimerTask {

        FooService fooSvc;

        public FooTask(FooService foos) {
            fooSvc = foos;
        }

        @Override
        public void run() {
            fooSvc.foo();

            TIMER.schedule(new FooTask(fooSvc), DELAYCALC.nextTime());
        }
    }

    private static final Timer TIMER = new Timer();

    private static final DelayCalculator DELAYCALC = new DelayCalculator();

    public static void main(String[] args) {
        FooTask fooT = new FooTask(() -> System.out.println("Foo"));
        TIMER.schedule(fooT, 0);
    }
}

答案 1 :(得分:0)

每5秒设置一个计时器(通过处理程序报警)。跟踪它被调用的次数。当该数字高于X时,将计时器更改为每4秒。当它高于2 * X时,将其改为3.等等。