關(guān)于Android CountDownTimer的使用及注意事項(xiàng)
Android CountDownTimer的使用
使用方式注意如下所示,有人喜歡用種方式使用倒計(jì)時(shí),這樣的確是可以實(shí)現(xiàn)計(jì)時(shí)功能,但是,這樣會(huì)有個(gè)小問題,那就是如果有一個(gè)需求是要計(jì)時(shí)結(jié)束后跳轉(zhuǎn)到一個(gè)頁面A,并且點(diǎn)擊其他按鈕時(shí)也會(huì)跳轉(zhuǎn)到一個(gè)頁面B,如果計(jì)時(shí)器還在計(jì)時(shí),就算你銷毀了當(dāng)前頁面,當(dāng)你跳轉(zhuǎn)到另一個(gè)頁面B,過一段時(shí)間你會(huì)發(fā)現(xiàn),突然跳到了A,為什么呢?
剛才不是已經(jīng)銷毀了這個(gè)頁面了嗎?
其實(shí)是你跳轉(zhuǎn)到B頁面后,計(jì)時(shí)器還在計(jì)時(shí),當(dāng)計(jì)時(shí)結(jié)束后就會(huì)跳轉(zhuǎn)到你在計(jì)時(shí)器的回調(diào)函數(shù) onFinish() 中指定跳轉(zhuǎn)的頁面。
new CountDownTimer(10 * 1000 , 1000) {//加500毫秒是為了解決計(jì)時(shí)不精確的 @SuppressLint("SetTextI18n") @Override public void onTick(long millisUntilFinished) { //倒計(jì)時(shí)的過程中回調(diào)該函數(shù) back_home.setText((millisUntilFinished / 1000+1) + " "); } @Override public void onFinish() { //倒計(jì)時(shí)結(jié)束時(shí)回調(diào)該函數(shù) finish(); } }.start();
我建議的使用方式
如下所示:
CountDownTimer mCountDownTimer1; mCountDownTimer1 = new CountDownTimer(10 * 1000 , 1000) {//加500毫秒是為了解決計(jì)時(shí)不精確的 @SuppressLint("SetTextI18n") @Override public void onTick(long millisUntilFinished) { //倒計(jì)時(shí)的過程中回調(diào)該函數(shù) back_home.setText("返回主頁 "+(millisUntilFinished / 1000+1) + " "); } @Override public void onFinish() { //倒計(jì)時(shí)結(jié)束時(shí)回調(diào)該函數(shù) finish(); } }.start();
用以個(gè)變量mCountDownTimer1,當(dāng)我們要跳轉(zhuǎn)到其他頁面時(shí),就是用mCountDownTimer1.cancel();方法取消計(jì)時(shí)器,就不會(huì)出現(xiàn)上述情況了
CountDownTimer還會(huì)有計(jì)時(shí)不準(zhǔn)確的問題,其實(shí)這個(gè)問題很多博客都有解析,這里就不再贅述。
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
React Native學(xué)習(xí)之Android的返回鍵BackAndroid詳解
這篇文章主要給大家介紹了關(guān)于React Native學(xué)習(xí)之Android的返回鍵BackAndroid的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用React Native具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起看看吧。2017-10-10Android仿微信列表滑動(dòng)刪除之可滑動(dòng)控件(一)
這篇文章主要為大家詳細(xì)介紹了Android仿微信列表滑動(dòng)刪除之可滑動(dòng)控件,具有一定的實(shí)用性和參考價(jià)值,感興趣的小伙伴們可以參考一下2016-08-08Android實(shí)現(xiàn)的ListView分組布局改進(jìn)示例
這篇文章主要介紹了Android實(shí)現(xiàn)的ListView分組布局改進(jìn)的方法,結(jié)合實(shí)例形式分析了Android針對(duì)ListView的分組布局相關(guān)操作技巧,需要的朋友可以參考下2016-08-08Android 自動(dòng)化測試經(jīng)驗(yàn)分享 UiObejct.getFromParent()的使用方法
本篇文章對(duì)Android中UiObejct.getFromParent()的使用進(jìn)行了詳細(xì)的分析介紹。需要的朋友參考下2013-05-05Android自定義View繪制貝塞爾曲線中小紅點(diǎn)的方法
貝塞爾曲線的本質(zhì)是通過數(shù)學(xué)計(jì)算的公式來繪制平滑的曲線,分為一階,二階,三階及多階。但是這里不講數(shù)學(xué)公式和驗(yàn)證,那些偉大的數(shù)學(xué)家已經(jīng)證明過了,所以就只講講Android開發(fā)中的運(yùn)用吧2023-02-02Windows下快速搭建安卓開發(fā)環(huán)境Android studio
這篇文章主要介紹了Windows下快速搭建安卓開發(fā)環(huán)境Android studio的相關(guān)資料,感興趣的小伙伴們可以參考一下2016-07-07Android onbackpressed實(shí)現(xiàn)返回鍵的攔截和彈窗流程分析
很多網(wǎng)友不明白如何在Android平臺(tái)上捕獲Back鍵的事件,Back鍵是手機(jī)上的后退鍵,一般的軟件不捕獲相關(guān)信息可能導(dǎo)致你的程序被切換到后臺(tái),而回到桌面的尷尬情況,在Android上有兩種方法來獲取該按鈕的事件2023-01-01Android編程實(shí)現(xiàn)activity dialog透明背景的方法
這篇文章主要介紹了Android編程實(shí)現(xiàn)activity dialog透明背景的方法,涉及Activity相關(guān)屬性設(shè)置及配置文件操作技巧,需要的朋友可以參考下2017-07-07