首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CountDownTimer回路

CountDownTimer回路
EN

Stack Overflow用户
提问于 2015-04-19 15:06:12
回答 1查看 682关注 0票数 0

我试着让CountDownTimer在一个循环中启动几次,但它只启动一次,并且应该至少再启动2次。

我尝试过循环,就在此时(x !=2)

代码语言:javascript
复制
        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;

我也尝试过这样做,但它使应用程序无法响应,不得不强制关闭它:

代码语言:javascript
复制
        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;

问题是,当我按下按钮tbWait时,如何循环这个按钮?turnOnLights()然后等待2秒,然后像turnOffLights()那样在车中等待按钮?对不起,我的英语很差,我对使用AndroidStudio的^ im非常陌生。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-04-19 16:08:27

用android的方式来做,使用Handler!

制造一个手柄,一个能开灯的可跑的,一个能关掉灯的可跑的:

代码语言:javascript
复制
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/检查该变量,它将在检查时每2秒自动闪烁一次。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29731624

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档