Android倒計時神器(CountDownTimer)
Android倒計時神器 - CountDownTimer,供大家參考,具體內容如下
啥是CountDownTimer?
CountDownTimer是Andorid.os包下一個谷歌為我們封裝好的一個倒計時工具。我們嗎、平時開發(fā)過程中像一些驗證碼、倒計時的功能,如果自己封裝一個倒計時工具就會稍顯麻煩。而谷歌這個工具使用起來非常方便。
源碼
package android.os; public abstract class CountDownTimer { public CountDownTimer(long millisInFuture, long countDownInterval) { throw new RuntimeException("Stub!"); } public final synchronized void cancel() { throw new RuntimeException("Stub!"); } public final synchronized CountDownTimer start() { throw new RuntimeException("Stub!"); } public abstract void onTick(long var1); public abstract void onFinish(); }
構造函數(shù):
兩個參數(shù),第一個是總的倒計時時間,第二個是倒計時間隔。比如1秒跳一次該參數(shù)就為1000,兩個參數(shù)的單位都為毫秒。
start():
調用該方法以啟動計時器。
cancel():
調用該方法以釋放計時器。
重要!一定要在onDestory等回調中cancel()計時器,否則會因為頁面被回收計時器還在運作而出現(xiàn)空指針錯誤!
回調方法:
onTick():
每個時間間隔會回調一次,比如設置了1000ms的間隔,就會每1000ms回調一次這個方法。
onFinish():
在整個計時器結束之后回調。
使用中的一些坑
計時不準的問題
雖然這個工具有針對延遲做了處理,但是因為一些其他原因,導致CountDownTimer開始計時的時候極有可能不從你設定的總時長開始計時。比如你設定的millsInFuture是30000(30s),CountDownTimer其實是從29xxx開始計時的,這樣會導致一些Text的UI顯示快一秒。解決辦法就是在構造的時候就傳入一個比30000大一些的數(shù),比如30300.
內存泄漏/空指針問題
CDT內部其實是對Handler有做一個封裝,所以一定一定要在回收的時候調用Timer的cnacel()方法,否則容易出現(xiàn)空指針錯誤。
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關文章
詳解Android應用中DialogFragment的基本用法
Android App中建議使用DialogFragment作為對話框的容器,DialogFragment類提供了創(chuàng)建對話框并管理其外觀需要的所有控件,本文主要內容便為詳解Android應用中DialogFragment的基本用法,而不再需要調用Dialog的方法需要的朋友可以參考下2016-05-05Android 將view 轉換為Bitmap出現(xiàn)空指針問題解決辦法
這篇文章主要介紹了Android 將view 轉換為Bitmap出現(xiàn)空指針問題解決辦法的相關資料,這里提供實例并提供解決辦法,需要的朋友可以參考下2017-07-07Android中ExpandableListView的用法實例
這篇文章主要介紹了Android中ExpandableListView的用法,以實例形式展示了Android中的下拉list控件的用法,需要的朋友可以參考下2014-10-10Android 開發(fā)仿簡書登錄框可刪除內容或顯示密碼框的內容
本文通過實例代碼給大家分享android開發(fā)中模仿簡書登錄框可刪除內容或顯示密碼框的內容,非常不錯,具有參考借鑒價值,需要的朋友參考下吧2016-12-12