2016-07-07 67 views

回答

1

CountDownTimer無法重新啓動,它只能使用一次。您必須創建自己的倒計時類,以處理重新啓動,或者只需創建一個新的實例CountDownTimer並取消舊實例。

參見下面,我們有一個CountDownTimer倒計時10秒鐘以1秒的間隔的示例代碼,Button即(通過取消當前定時器和啓動一個新的)復位點擊時的定時器,以及一個TextView那顯示當前計時器剩餘的時間。

public class YourActivity extends Activity { 

    private CountDownTimer countDownTimer; 
    private TextView timerDisplayTextView; 

    private static final long TEN_SECONDS = TimeUnit.SECONDS.toMillis(10); 
    private static final long COUNTDOWN_INTERVAL = TimeUnit.SECONDS.toMillis(1); 

    @Override 
    public void onCreate(Bundle icicle) { 
     super.onCreate(icicle); 

     Button myButton; // initialized here 
     // timerDisplayTextView initialized here 

     myButton.setOnClickListener(new OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       countDownTimer.cancel(); 
       countDownTimer = getNewCountDownTimer(TEN_SECONDS); 
       countDownTimer.start(); 
       showTimeInTextView(TEN_SECONDS); 
      } 
     }); 

     countDownTimer = getNewCountDownTimer(TEN_SECONDS); 
     countDownTimer.start(); 
    } 

    @Override 
    protected void onDestroy() { 
     super.onDestroy(); 
     countDownTimer.cancel(); 
    } 

    private void showTimeInTextView(long millisecondsLeft) { 
     timerDisplayTextView.setText(TimeUnit.MILLISECONDS.toSeconds(millisecondsLeft) + " seconds left"); 
    } 

    private CountDownTimer getNewCountDownTimer(long length) { 
     return new CountDownTimer(length, COUNTDOWN_INTERVAL) { 
      @Override 
      public void onTick(long millisUntilFinished) { 
       showTimeInTextView(millisUntilFinished); 
      } 

      @Override 
      public void onFinish() { 

      } 
     }; 
    } 
}