Android倒計(jì)時神器(CountDownTimer)
Android倒計(jì)時神器 - CountDownTimer,供大家參考,具體內(nèi)容如下
啥是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)空指針錯誤。
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Android Flutter實(shí)現(xiàn)點(diǎn)贊效果的示例代碼
點(diǎn)贊這個動作不得不說在社交、短視頻等App中實(shí)在是太常見了。本文將利用Flutter制作出一個點(diǎn)贊動畫效果,感興趣的小伙伴可以學(xué)習(xí)一下2022-04-04
Android調(diào)用系統(tǒng)攝像頭拍照并顯示在ImageView上
這篇文章主要為大家詳細(xì)介紹了Android調(diào)用系統(tǒng)攝像頭拍照并顯示在ImageView上,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-04-04
Android使用OpenGL和MediaCodec錄制功能
OpenGL是一個跨平臺的操作GPU的API,但OpenGL需要本地視窗系統(tǒng)進(jìn)行交互,這就需要一個中間控制層, EGL就是連接OpenGL ES和本地窗口系統(tǒng)的接口,引入EGL就是為了屏蔽不同平臺上的區(qū)別,這篇文章主要介紹了Android使用OpenGL和MediaCodec錄制功能,需要的朋友可以參考下2025-04-04
Android設(shè)置透明狀態(tài)欄和透明導(dǎo)航欄
本文主要介紹了Android設(shè)置透明狀態(tài)欄和透明導(dǎo)航欄的方法。具有很好的參考價(jià)值。下面跟著小編一起來看下吧2017-03-03
Android開發(fā):淺談MVP模式應(yīng)用與內(nèi)存泄漏問題解決
本篇文章主要介紹了Android開發(fā):MVP模式應(yīng)用與內(nèi)存泄漏問題解決,具有一定的參考價(jià)值,有需要的可以了解一下。2016-11-11
Android實(shí)現(xiàn)的仿淘寶購物車demo示例
這篇文章主要介紹了Android實(shí)現(xiàn)的仿淘寶購物車demo示例,結(jié)合實(shí)例形式分析了Android購物車的功能、布局及邏輯實(shí)現(xiàn)技巧,需要的朋友可以參考下2016-07-07
Android中實(shí)現(xiàn)ping功能的多種方法詳解
這篇文章主要介紹了Android中實(shí)現(xiàn)ping功能的多種方法詳解,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-03-03
Flutter學(xué)習(xí)之Navigator的高級用法分享
這篇文章主要為大家詳細(xì)介紹了Flutter中之Navigator的高級用法的相關(guān)知識,文中的示例代碼講解詳細(xì),具有一定的學(xué)習(xí)價(jià)值,感興趣的可以了解一下2023-02-02

