Android 에서 CountDownTimer 카운트다운 기능 구현

CountDownTimer
Countdown Timer 는 안 드 로 이 드 가 자체 적 으로 가지 고 있 는 카운트다운 클래스 입 니 다.이 종 류 를 사용 하면 카운트다운 기능 을 간단하게 실현 할 수 있 습 니 다.
Countdown Timer 의 실현 방식 

new CountDownTimer(6000,1000) {//                ,                。
          @Override
          public void onTick(long millisUntilFinished) {//      
            textView.setText(millisUntilFinished / 1000 + " ");
          }

          @Override
          public void onFinish() {//     
            textView.setText("     ");
          }
        }.start();
실현 효과

타이머 취소
Countdown Timer 의 cancel()방법 을 호출 하면 타 이 머 를 취소 할 수 있 습 니 다.그러나 이 방법 은 안 드 로 이 드 5.0 이상 만 효과 가 있 고 안 드 로 이 드 5.0 이하 에 서 는 효과 가 없습니다.안 드 로 이 드 5.0 이하 시스템 에서 도 cancel 을 사용 해 야 한다 면 Countdown Timer 소스 코드 의 실현 방식 에 따라 다시 실현 해 야 합 니 다.

  /**
   * Cancel the countdown.
   */
  public synchronized final void cancel() {
    mCancelled = true;
    mHandler.removeMessages(MSG);
  }


 private static final int MSG = 1;


  // handles counting down
  private Handler mHandler = new Handler() {

    @Override
    public void handleMessage(Message msg) {

      synchronized (CountDownTimer.this) {
        if (mCancelled) {
          return;
        }

        final long millisLeft = mStopTimeInFuture - SystemClock.elapsedRealtime();

        if (millisLeft <= 0) {
          onFinish();
        } else if (millisLeft < mCountdownInterval) {
          // no tick, just delay until done
          sendMessageDelayed(obtainMessage(MSG), millisLeft);
        } else {
          long lastTickStart = SystemClock.elapsedRealtime();
          onTick(millisLeft);

          // take into account user's onTick taking time to execute
          long delay = lastTickStart + mCountdownInterval - SystemClock.elapsedRealtime();

          // special case: user's onTick took more than interval to
          // complete, skip to next interval
          while (delay < 0) delay += mCountdownInterval;

          sendMessageDelayed(obtainMessage(MSG), delay);
        }
      }
    }
  };

안 드 로 이 드 5.0 이상 에 하나 추가 되 었 기 때 문 입 니 다.

private boolean mCancelled = false;
그래서 우 리 는 5.0 이하 의 시스템 에서 만 제거 해 야 한다.

 if (mCancelled) {
          return;
        }
이 판단 을 없 애 면 됩 니 다.
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

좋은 웹페이지 즐겨찾기