使countDownTimer立即执行,然后每隔x秒执行一次

时间:2020-01-10 00:49:15

标签: java android countdowntimer

我有一个countDownTimer,它在单击按钮时每10秒执行一段代码。但是它仅在单击按钮10秒钟后执行代码。如何使它立即执行,然后每隔一秒钟执行一次?

CountDownTimer countDown;

public void onButtonClick (View v) throws IOException, InterruptedException {

countDown = new CountDownTimer(10000,10000)
        {
            @Override
            public void onTick(long millisUntilFinished) {

            }

            @Override
            public void onFinish() {
                start();
                //codes
        }.start();

    }
}

2 个答案:

答案 0 :(得分:0)

https://developer.android.com/reference/android/os/CountDownTimer

CountDownTimer(long millisInFuture,countDownInterval)

'millisInfutre'表示在start()之后直到调用onFinish()为止的毫秒数

将'millisInfutre'设置为更大。而且我认为没有必要在CountDownTimer的一部分中进行第一次调用。只需直接调用即可。

someYourTask(?);
new CountDownTimer(Long.MAX_VALUE, 10000) {
    @Override
    public void onTick(long l) {
        someYourTask(?);
    }
    @Override
    public void onFinish() {
        Log.d("SOME_TAG", "FINISH");
    }
}.start();


? someYourTask(?) {}

答案 1 :(得分:0)

如果您想每10秒执行一次代码,我建议您做点其他事情。

执行startRepeatingTask();单击按钮时。

private int interval = 10000; //every 10 seconds
private Handler handler;

Runnable codeExecuter = new Runnable() {
    @Override
    public void run() {
        try {
           //run your code
        } finally {
            handler.postDelayed(codeExecuter, interval);
        }
    }
};

void startRepeatingTask() {
    codeExecuter.run();
}

void stopRepeatingTask() {
    handler.removeCallbacks(codeExecuter);
}