我试着让CountDownTimer在一个循环中启动几次,但它只启动一次,并且应该至少再启动2次。
我尝试过循环,就在此时(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;问题是,当我按下按钮tbWait时,如何循环这个按钮?turnOnLights()然后等待2秒,然后像turnOffLights()那样在车中等待按钮?对不起,我的英语很差,我对使用AndroidStudio的^ im非常陌生。
发布于 2015-04-19 16:08:27
用android的方式来做,使用Handler!
制造一个手柄,一个能开灯的可跑的,一个能关掉灯的可跑的:
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秒自动闪烁一次。
https://stackoverflow.com/questions/29731624
复制相似问题