欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

AndroidCountDownTimer實現(xiàn)倒計時器

使用介紹

創(chuàng)新互聯(lián)主要從事網(wǎng)站建設、做網(wǎng)站、網(wǎng)頁設計、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務。立足成都服務公主嶺,十多年網(wǎng)站建設經(jīng)驗,價格優(yōu)惠、服務專業(yè),歡迎來電咨詢建站服務:13518219792

開發(fā)中經(jīng)常會遇到一些和倒計時有關的場景,比如發(fā)送驗證碼的按鈕,會在點擊發(fā)送后,顯示倒計時間,倒計時結束后才能夠刷新按鈕,再次允許點擊。為了不阻塞軟件的運行,又要實時刷新界面,我們通常會用到 Handler 或者 AsyncTask 等技術,自己寫邏輯實現(xiàn)。其實 Android 中已經(jīng)封裝好了一套 CountDownTimer 來實現(xiàn)這個功能需求。

CountDownTimer(long millisInFuture, long countDownInterval)

CountDownTimer的兩個參數(shù)分別表示倒計時的總時間 millisInFuture和間隔時間 countDownInterval。

具體的調(diào)用如下:

TextView vertifyBtn;
CountDownTimer timer = new CountDownTimer(60000, 1000) {

  @Override
  public void onTick(long millisUntilFinished) {
    vertifyBtn.setText((millisUntilFinished / 1000) + " second");
  }
  
  @Override
  public void onFinish() {
    vertifyBtn.setEnabled(true);
    vertifyBtn.setText("Send");
  }
};
timer.start();

上面的調(diào)用舉例表示總計 60 秒,每 1 秒都會執(zhí)行一次 onTick 方法,其參數(shù) millisUntilFinished 表示倒計時剩余時間毫秒數(shù),最后倒計時結束執(zhí)行 onFinish 方法。

實現(xiàn)原理

下面是 CountDownTimer 的源碼,代碼非常少,很好理解。從源代碼中可以看出,其實 CountDownTimer 也是利用 Handler 的消息處理機制來實現(xiàn)效果的。初始化設定好起始和終止時間后,每隔一定的間隔時間通過 Handler 給主線程發(fā)送消息,然后再在消息處理中回調(diào)方法。好好利用官方封裝好的工具類,可以避免我們重復的造輪子,當然了解輪子的原理就更好了!

package android.os;

public abstract class CountDownTimer {
  private final long mMillisInFuture;
  private final long mCountdownInterval;
  private long mStopTimeInFuture;
  private boolean mCancelled = false;

  public CountDownTimer(long millisInFuture, long countDownInterval) {
    mMillisInFuture = millisInFuture;
    mCountdownInterval = countDownInterval;
  }

  public synchronized final void cancel() {
    mCancelled = true;
    mHandler.removeMessages(MSG);
  }

  public synchronized final CountDownTimer start() {
    mCancelled = false;
    if (mMillisInFuture <= 0) {
      onFinish();
      return this;
    }
    mStopTimeInFuture = SystemClock.elapsedRealtime() + mMillisInFuture;
    mHandler.sendMessage(mHandler.obtainMessage(MSG));
    return this;
  }

  public abstract void onTick(long millisUntilFinished);

  public abstract void onFinish();

  private static final int MSG = 1;
  
  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);
        }
      }
    }
  };
}

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持創(chuàng)新互聯(lián)。

名稱欄目:AndroidCountDownTimer實現(xiàn)倒計時器
文章地址:http://aaarwkj.com/article4/gjdgoe.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供外貿(mào)建站搜索引擎優(yōu)化、網(wǎng)站制作面包屑導航、靜態(tài)網(wǎng)站外貿(mào)網(wǎng)站建設

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉載內(nèi)容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)

網(wǎng)站托管運營
韩国福利短片在线观看| 尤物视频在线观看羞羞| 午夜视频在线看一区免费| 亚洲黄色片一区二区三区| av在线播放网址网站| 天天操天天干蜜桃av| 激情四射五月天亚洲婷婷| 国模在线视频一区二区| 日本不卡一区二区在线播放| 激情影院在线观看福利| 久久精品一品二品三品| 麻豆人妻少妇精品系列| 亚洲成人免费电影91| 国产精品国产三级国产专区| 在线观看中文字幕日韩精品| 青青草视频免费公开播放| 国产龙熟女高潮一区二区| 亚洲熟妇精品一区二区三区| 国产精品五月婷婷六月丁香| 国产成人原创免费观看| 高清日本一区二区三区不卡片| 五月天丁香婷婷深爱| 麻豆国产传媒69国产| 中文字幕乱码亚洲2019| 丰满人妻少妇一区二区| 国产精品久久中文字幕亚洲| 老湿机午夜在线免费观看| 久久久久久亚洲av黄床| 激情自拍偷拍合集一部| 中文字幕熟女av一区二区| 夜夜高潮夜夜爽免费观看| 亚洲av成人在线资源| 亚洲乱码中文字幕在线观看| 正在播放老肥熟妇露脸| av熟妇人妻一区二区三区| 2020亚洲欧美日韩在线| 不卡视频在线免费观看| 欧美日韩性性在线观看| 日韩精品一区二区三区都在看| 欧美黄片高清免费播放| 国产青草视频免观看视频|