2015-04-19 80 views
0

我試着做CountDownTimer開始幾次的循環,但它只是一個開始時間,它應該開始至少2次以上,CountDownTimer環

我試過for循環,只是在(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; 

的問題是如何做我這個循環時,我切換切換按鈕TB等着? turnOnLights()然後等待2秒,然後turnOffLights()就像汽車中的等待按鈕?對不起我的壞英語和即時通訊真的是新的^^ 即時通訊使用AndroidStudio

回答

0

做到這一點的Android方式,使用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) 
} 

現在所有的按鈕所要做的就是取消/檢查變量,它會自動閃光每2秒檢查一次。