CountDownTimer 循环

CountDownTimer loop

我试图让 CountDownTimer 循环启动几次,但它只启动了一次,应该至少再启动 2 次,

我试过 for 循环和 While(x !=2)

        case R.id.tbWait:
            if (waiting.isChecked()){

                int x = 0;
                    do {
                turnOnLights();
                new CountDownTimer(2000, 1000){
                    @Override
                    public void onTick(long millisUntilFinished) {

                    }
                    @Override
                    public void onFinish(){
                    turnOffLights();
                }
                }.start();
                    x++;
                    } while (x !=2);

            }

        break;

我也试过了,但它使应用程序没有响应,必须强制关闭它:(

        case R.id.tbWait:
            while (waiting.isChecked()){ //Using While instead of if statemnt 

                turnOnLights();
                new CountDownTimer(2000, 1000){
                    @Override
                    public void onTick(long millisUntilFinished) {

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



            }

        break;

问题是当我打开 Toggle Button tbWait 时如何循环播放? turnOnLights() 然后等待 2 秒然后 turnOffLights() 就像车上的等待按钮一样?抱歉我的英语不好,我真的很陌生^^ 我正在使用 AndroidStudio

按照 android 的方式,使用 Handler!

制作一个 Handler,一个 Runnable 来开灯,一个 Runnable 来关灯:

public class YourClass extends ProbablySomeClass{
Handler lightsHandler; //The android.os.Handler one, not the java one
Runnable lightsON = new Runnable(){
    @Override
    public void run(){
        if(waiting.isChecked){
            turnLightsOn();
            lightsHandler.postDelayed(lightsOff, 2000);
        }
        else lightsHandler.postDelayed(lightsON, 1000);
    }
}
Runnable lightsOff = new Runnable(){
    @Override
    public void run(){
        turnLightsOff();
        lightsHandler.postDelayed(lightsON, 2000);
    }
}
public YourClass(SomeType someParameter){
init(someParameters);    //Whatever your constructor does
lightsHandler = new Handler();
lightsHandler.post(lightsOn)
}

现在你的按钮所要做的就是un/check那个变量,当它被选中时它会每2秒自动闪烁一次。