1. 程式人生 > >用countdowntimer實現60秒倒計時獲取驗證碼

用countdowntimer實現60秒倒計時獲取驗證碼

博主android新手,有什麼不足求輕噴。

下面看下我的程式碼先

private void countDown() {
        timer = new CountDownTimer(60900, 1000) {
            @Override
            public void onTick(long millisUntilFinished) {
                Message msg = Message.obtain();
                msg.arg1 = (int)millisUntilFinished/1000 -1;
                msg.what = 10;
                handler.sendMessage(msg);
            }

            @Override
            public void onFinish() {
                timer.cancel();
            }
        }.start();
}

記得按鈕設定為不可點選。

上面是我倒計時的主要方法,因為CountDownTimer中取到的millisUntilFinished有偏差還有倒計時不到0,所以對CountDownTimer的第一個引數進行了處理。

處理的方法我參考了博主濤聲依舊Cjt的微博:http://blog.csdn.net/u010898329/article/details/75005814

然後通過handler把時間傳遞出去,然後做判斷


最主要的是最後的當時間返回0時,要新增timer.cancel();還有timer=null;

因為當返回的時間為0時,onfinish()方法不會馬上執行(大概延遲1或2秒執行),而獲取驗證的按鈕在為0是又處於可點選狀態,所以如果在時間返回0時候馬上就點選獲取驗證碼,會重新倒計時,但是1或2秒後會執行上一個timer的onfinish()裡面的timer.cancel()方法,所以第二個的timer會被取消掉,出現倒計時停在59秒或58秒的情況。

好以上就是我的倒計時的內容,第一次寫,有什麼不足還請大家指教,如果上面的程式碼有什麼問題還請指出,共同討論共同進步,謝謝