Android倒計(jì)時(shí)神器(CountDownTimer)
Android倒計(jì)時(shí)神器 - CountDownTimer,供大家參考,具體內(nèi)容如下
啥是CountDownTimer?
CountDownTimer是Andorid.os包下一個(gè)谷歌為我們封裝好的一個(gè)倒計(jì)時(shí)工具。我們嗎、平時(shí)開發(fā)過程中像一些驗(yàn)證碼、倒計(jì)時(shí)的功能,如果自己封裝一個(gè)倒計(jì)時(shí)工具就會(huì)稍顯麻煩。而谷歌這個(gè)工具使用起來非常方便。
源碼
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();
}
構(gòu)造函數(shù):
兩個(gè)參數(shù),第一個(gè)是總的倒計(jì)時(shí)時(shí)間,第二個(gè)是倒計(jì)時(shí)間隔。比如1秒跳一次該參數(shù)就為1000,兩個(gè)參數(shù)的單位都為毫秒。
start():
調(diào)用該方法以啟動(dòng)計(jì)時(shí)器。
cancel():
調(diào)用該方法以釋放計(jì)時(shí)器。
重要!一定要在onDestory等回調(diào)中cancel()計(jì)時(shí)器,否則會(huì)因?yàn)轫?yè)面被回收計(jì)時(shí)器還在運(yùn)作而出現(xiàn)空指針錯(cuò)誤!
回調(diào)方法:
onTick():
每個(gè)時(shí)間間隔會(huì)回調(diào)一次,比如設(shè)置了1000ms的間隔,就會(huì)每1000ms回調(diào)一次這個(gè)方法。
onFinish():
在整個(gè)計(jì)時(shí)器結(jié)束之后回調(diào)。
使用中的一些坑
計(jì)時(shí)不準(zhǔn)的問題
雖然這個(gè)工具有針對(duì)延遲做了處理,但是因?yàn)橐恍┢渌?,?dǎo)致CountDownTimer開始計(jì)時(shí)的時(shí)候極有可能不從你設(shè)定的總時(shí)長(zhǎng)開始計(jì)時(shí)。比如你設(shè)定的millsInFuture是30000(30s),CountDownTimer其實(shí)是從29xxx開始計(jì)時(shí)的,這樣會(huì)導(dǎo)致一些Text的UI顯示快一秒。解決辦法就是在構(gòu)造的時(shí)候就傳入一個(gè)比30000大一些的數(shù),比如30300.
內(nèi)存泄漏/空指針問題
CDT內(nèi)部其實(shí)是對(duì)Handler有做一個(gè)封裝,所以一定一定要在回收的時(shí)候調(diào)用Timer的cnacel()方法,否則容易出現(xiàn)空指針錯(cuò)誤。
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
詳解Android應(yīng)用中DialogFragment的基本用法
Android App中建議使用DialogFragment作為對(duì)話框的容器,DialogFragment類提供了創(chuàng)建對(duì)話框并管理其外觀需要的所有控件,本文主要內(nèi)容便為詳解Android應(yīng)用中DialogFragment的基本用法,而不再需要調(diào)用Dialog的方法需要的朋友可以參考下2016-05-05
在Android線程池里運(yùn)行代碼任務(wù)實(shí)例
這篇文章主要介紹了在Android線程池里運(yùn)行代碼任務(wù)實(shí)例,同時(shí)介紹了線程池中停止任務(wù)的方法,需要的朋友可以參考下2014-06-06
Android 將view 轉(zhuǎn)換為Bitmap出現(xiàn)空指針問題解決辦法
這篇文章主要介紹了Android 將view 轉(zhuǎn)換為Bitmap出現(xiàn)空指針問題解決辦法的相關(guān)資料,這里提供實(shí)例并提供解決辦法,需要的朋友可以參考下2017-07-07
Android中ExpandableListView的用法實(shí)例
這篇文章主要介紹了Android中ExpandableListView的用法,以實(shí)例形式展示了Android中的下拉list控件的用法,需要的朋友可以參考下2014-10-10
在Android中 獲取正在運(yùn)行的Service 實(shí)例
本篇文章小編為大家介紹,在Android中 獲取正在運(yùn)行的Service 實(shí)例。需要的朋友參考下2013-04-04
Android 開發(fā)仿簡(jiǎn)書登錄框可刪除內(nèi)容或顯示密碼框的內(nèi)容
本文通過實(shí)例代碼給大家分享android開發(fā)中模仿簡(jiǎn)書登錄框可刪除內(nèi)容或顯示密碼框的內(nèi)容,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友參考下吧2016-12-12
Android實(shí)現(xiàn)獲取SERIAL信息的方法
這篇文章主要介紹了Android實(shí)現(xiàn)獲取SERIAL信息的方法,涉及Android操作SERIAL的相關(guān)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-10-10
android第三方分享方式的簡(jiǎn)單實(shí)現(xiàn)
這篇文章主要為大家詳細(xì)介紹了android第三方分享方式的簡(jiǎn)單實(shí)現(xiàn),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-10-10

