本文小編為大家詳細(xì)介紹“Android中如何使用CountDownTimer實(shí)現(xiàn)倒計(jì)時”,內(nèi)容詳細(xì),步驟清晰,細(xì)節(jié)處理妥當(dāng),希望這篇“Android中如何使用CountDownTimer實(shí)現(xiàn)倒計(jì)時”文章能幫助大家解決疑惑,下面跟著小編的思路慢慢深入,一起來學(xué)習(xí)新知識吧。
讓客戶滿意是我們工作的目標(biāo),不斷超越客戶的期望值來自于我們對這個行業(yè)的熱愛。我們立志把好的技術(shù)通過有效、簡單的方式提供給客戶,將通過不懈努力成為客戶在信息化領(lǐng)域值得信任、有價值的長期合作伙伴,公司提供的服務(wù)項(xiàng)目有:國際域名空間、雅安服務(wù)器托管、營銷軟件、網(wǎng)站建設(shè)、山海關(guān)網(wǎng)站維護(hù)、網(wǎng)站推廣。啥是CountDownTimer?
CountDownTimer是Andorid.os包下一個谷歌為我們封裝好的一個倒計(jì)時工具。我們嗎、平時開發(fā)過程中像一些驗(yàn)證碼、倒計(jì)時的功能,如果自己封裝一個倒計(jì)時工具就會稍顯麻煩。而谷歌這個工具使用起來非常方便。
源碼
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ù):
兩個參數(shù),第一個是總的倒計(jì)時時間,第二個是倒計(jì)時間隔。比如1秒跳一次該參數(shù)就為1000,兩個參數(shù)的單位都為毫秒。
start():
調(diào)用該方法以啟動計(jì)時器。
cancel():
調(diào)用該方法以釋放計(jì)時器。
重要!一定要在onDestory等回調(diào)中cancel()計(jì)時器,否則會因?yàn)轫撁姹换厥沼?jì)時器還在運(yùn)作而出現(xiàn)空指針錯誤!
回調(diào)方法:
onTick():
每個時間間隔會回調(diào)一次,比如設(shè)置了1000ms的間隔,就會每1000ms回調(diào)一次這個方法。
onFinish():
在整個計(jì)時器結(jié)束之后回調(diào)。
使用中的一些坑
計(jì)時不準(zhǔn)的問題
雖然這個工具有針對延遲做了處理,但是因?yàn)橐恍┢渌颍瑢?dǎo)致CountDownTimer開始計(jì)時的時候極有可能不從你設(shè)定的總時長開始計(jì)時。比如你設(shè)定的millsInFuture是30000(30s),CountDownTimer其實(shí)是從29xxx開始計(jì)時的,這樣會導(dǎo)致一些Text的UI顯示快一秒。解決辦法就是在構(gòu)造的時候就傳入一個比30000大一些的數(shù),比如30300.
內(nèi)存泄漏/空指針問題
CDT內(nèi)部其實(shí)是對Handler有做一個封裝,所以一定一定要在回收的時候調(diào)用Timer的cnacel()方法,否則容易出現(xiàn)空指針錯誤。
讀到這里,這篇“Android中如何使用CountDownTimer實(shí)現(xiàn)倒計(jì)時”文章已經(jīng)介紹完畢,想要掌握這篇文章的知識點(diǎn)還需要大家自己動手實(shí)踐使用過才能領(lǐng)會,如果想了解更多相關(guān)內(nèi)容的文章,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。