關(guān)于Android CountDownTimer的使用及注意事項
Android CountDownTimer的使用
使用方式注意如下所示,有人喜歡用種方式使用倒計時,這樣的確是可以實現(xiàn)計時功能,但是,這樣會有個小問題,那就是如果有一個需求是要計時結(jié)束后跳轉(zhuǎn)到一個頁面A,并且點擊其他按鈕時也會跳轉(zhuǎn)到一個頁面B,如果計時器還在計時,就算你銷毀了當(dāng)前頁面,當(dāng)你跳轉(zhuǎn)到另一個頁面B,過一段時間你會發(fā)現(xiàn),突然跳到了A,為什么呢?
剛才不是已經(jīng)銷毀了這個頁面了嗎?
其實是你跳轉(zhuǎn)到B頁面后,計時器還在計時,當(dāng)計時結(jié)束后就會跳轉(zhuǎn)到你在計時器的回調(diào)函數(shù) onFinish() 中指定跳轉(zhuǎn)的頁面。
new CountDownTimer(10 * 1000 , 1000) {//加500毫秒是為了解決計時不精確的
@SuppressLint("SetTextI18n")
@Override
public void onTick(long millisUntilFinished) {
//倒計時的過程中回調(diào)該函數(shù)
back_home.setText((millisUntilFinished / 1000+1) + " ");
}
@Override
public void onFinish() {
//倒計時結(jié)束時回調(diào)該函數(shù)
finish();
}
}.start();
我建議的使用方式
如下所示:
CountDownTimer mCountDownTimer1;
mCountDownTimer1 = new CountDownTimer(10 * 1000 , 1000) {//加500毫秒是為了解決計時不精確的
@SuppressLint("SetTextI18n")
@Override
public void onTick(long millisUntilFinished) {
//倒計時的過程中回調(diào)該函數(shù)
back_home.setText("返回主頁 "+(millisUntilFinished / 1000+1) + " ");
}
@Override
public void onFinish() {
//倒計時結(jié)束時回調(diào)該函數(shù)
finish();
}
}.start();
用以個變量mCountDownTimer1,當(dāng)我們要跳轉(zhuǎn)到其他頁面時,就是用mCountDownTimer1.cancel();方法取消計時器,就不會出現(xiàn)上述情況了
CountDownTimer還會有計時不準(zhǔn)確的問題,其實這個問題很多博客都有解析,這里就不再贅述。
總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
Android實現(xiàn)TCP客戶端接收數(shù)據(jù)的方法
這篇文章主要介紹了Android實現(xiàn)TCP客戶端接收數(shù)據(jù)的方法,較為詳細的分析了Android基于TCP實現(xiàn)客戶端接收數(shù)據(jù)的相關(guān)技巧與注意事項,需要的朋友可以參考下2016-04-04
Android利用ViewPager實現(xiàn)滑動廣告板實例源碼
利用ViewPager我們可以做很多事情,從最簡單的導(dǎo)航,到頁面切換菜單等等。ViewPager的功能就是可以使視圖滑動,就像Lanucher左右滑動那樣2013-06-06
Android Mms之:對話與聯(lián)系人關(guān)聯(lián)的總結(jié)詳解
本篇文章是對Android中對話與聯(lián)系人的關(guān)聯(lián)進行了詳細的分析介紹,需要的朋友參考下2013-05-05
Android App中讀取XML與JSON格式數(shù)據(jù)的基本方法示例
這篇文章主要介紹了Android App中讀取XML與JSON格式數(shù)據(jù)的基本方法示例,Android中自帶的JSONObject非常好用,需要的朋友可以參考下2016-03-03

