日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術(shù)文章
文章詳情頁

Android CountDownTimer案例總結(jié)

瀏覽:33日期:2023-12-10 15:37:33
目錄一、概述二、API三、基本使用方法四、使用注意一、概述

項目中經(jīng)常用到倒計時的功能,比如說限時搶購,手機獲取驗證碼等等。而google官方也幫我們封裝好了一個類:CountDownTimer,使我們的開發(fā)更加方便;

二、API

CountDownTimer是一個抽象類,有兩個抽象方法,它的API很簡單

public abstract void onTick(long millisUntilFinished);//這個是每次間隔指定時間的回調(diào),millisUntilFinished:剩余的時間,單位毫秒public abstract void onFinish();//這個是倒計時結(jié)束的回調(diào)

使用的時候只需要

new CountDownTimer(long millisInFuture, long countDownInterval)

//millisInFuture:倒計時的總時長

//countDownInterval:每次的間隔時間 單位都是毫秒三、基本使用方法

我們以短信驗證碼的倒計時來看,點擊獲取驗證碼,倒計時60s不可點擊

new CountDownTimer(60 * 1000, 1000) { @Override public void onFinish() {if (tvCode != null) { tvCode.setText('重新獲取'); tvCodeWr.setTextColor(Color.parseColor('#E94715')); tvCode.setClickable(true); tvCode.setEnabled(true);}cancel(); } @Override public void onTick(long millisUntilFinished) {if (tvCode != null) { tvCode.setClickable(false); tvCode.setEnabled(false); tvCode.setText(millisUntilFinished / 1000 + 's'); tvCode.setTextColor(Color.parseColor('#999999'));} }}.start();

點擊按鈕,獲取驗證碼成功之后就可以執(zhí)行以上操作,最后一定要start,不然不會執(zhí)行

四、使用注意

CountDownTimer使用很簡單,但是坑很多,需要注意避免踩坑。

1、空指針:如果在activity或者fragment關(guān)閉銷毀的時候沒有調(diào)用cancle方法,它的onTick方法還是會繼續(xù)執(zhí)行,這個時候UI控件都為空,不注意判斷的話很容易空指針

2、時間不是太準的問題:

    我們看CountDownTimer的源碼可以看到,在執(zhí)行onTick的方法時,google源碼里面減去了程序執(zhí)行到這里的時候所消耗的時間,這里可以看出google代碼的嚴謹

final long millisLeft = mStopTimeInFuture - SystemClock.elapsedRealtime();if (millisLeft <= 0) { onFinish();} else if (millisLeft < mCountdownInterval) { // no tick, just delay until done sendMessageDelayed(obtainMessage(MSG), millisLeft);}

所以一開始倒計時的時間是59,這里可以在構(gòu)造方法里面稍微加一點時間就可以解決如:

new CountDownTimer(60 * 1000+300, 1000)

3、內(nèi)存泄漏問題

    首先我們來看源碼,核心代碼如下

private Handler mHandler = new Handler() { @Override public void handleMessage(Message msg) {synchronized (CountDownTimer.this) { if (mCancelled) {return; } final long millisLeft = mStopTimeInFuture - SystemClock.elapsedRealtime(); if (millisLeft <= 0) {onFinish(); } else if (millisLeft < mCountdownInterval) {// no tick, just delay until donesendMessageDelayed(obtainMessage(MSG), millisLeft); } else {long lastTickStart = SystemClock.elapsedRealtime();onTick(millisLeft);// take into account user’s onTick taking time to executelong delay = lastTickStart + mCountdownInterval - SystemClock.elapsedRealtime();// special case: user’s onTick took more than interval to// complete, skip to next intervalwhile (delay < 0) delay += mCountdownInterval;sendMessageDelayed(obtainMessage(MSG), delay); }} }};

可以看到CountDownTimer的原理還是用到了Handler,所以很容易造成內(nèi)存泄漏問題,當Activity或者Fragment關(guān)閉而倒計時還未結(jié)束的時候,會在后臺一直執(zhí)行,而很多時候我們用倒計時會有更新UI的操作,而控件都持有activity的引用,長期得不到釋放的話就會造成內(nèi)存泄漏,甚至會造成1所說的空指針問題,所以一般要在activity或fragment銷毀的時候調(diào)用cancle方法。

我自己把這個進行了封裝,寫成了一個工具類以供參考:

public class TimeUtils { private String color;//這里可以修改文字顏色 WeakReference<TextView> tvCodeWr;//控件軟引用,防止內(nèi)存泄漏 private CountDownTimer timer; public TimeUtils(TextView tvCode, String color) {super();this.tvCodeWr = new WeakReference(tvCode);this.color = color; }//這是倒計時執(zhí)行方法 public void RunTimer() {timer = new CountDownTimer(60 * 1000 - 1, 1000) { @Override public void onFinish() {if (tvCodeWr.get() != null) { tvCodeWr.get().setText('重新獲取'); tvCodeWr.get().setTextColor(Color.parseColor(color)); tvCodeWr.get().setClickable(true); tvCodeWr.get().setEnabled(true);}cancel(); } @Override public void onTick(long millisUntilFinished) {if (tvCodeWr.get() != null) { tvCodeWr.get().setClickable(false); tvCodeWr.get().setEnabled(false); tvCodeWr.get().setText(millisUntilFinished / 1000 + 's'); tvCodeWr.get().setTextColor(Color.parseColor('#999999'));} }}.start(); }//這個方法可以在activity或者fragment銷毀的時候調(diào)用,防止內(nèi)存泄漏 public void cancle() {if (timer != null) { timer.cancel(); timer = null;} }}

到此這篇關(guān)于Android CountDownTimer案例總結(jié)的文章就介紹到這了,更多相關(guān)Android CountDownTimer內(nèi)容請搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!

標簽: Android
相關(guān)文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
日韩黄色av| 久久国产66| 国产精品一区二区三区www| 日韩中文字幕一区二区三区| 伊人久久亚洲热| 国产一区91| 国产精品国码视频| 亚洲综合日韩| 蘑菇福利视频一区播放| 欧美日韩精品一本二本三本| 手机在线电影一区| 最近高清中文在线字幕在线观看1| 精品久久久亚洲| 麻豆精品在线观看| 福利在线一区| 欧美日韩中文字幕一区二区三区| 天堂网在线观看国产精品| 91精品1区| 亚洲精选91| 国产激情一区| 日韩一区二区三区在线免费观看| 亚洲国内欧美| 亚洲色图网站| 国产精品超碰| 日韩不卡免费高清视频| 秋霞国产精品| 日韩视频二区| 香蕉久久久久久| 国产精品一区亚洲| 亚洲永久av| 激情自拍一区| 日本一区二区中文字幕| 国产欧美69| 蜜臀国产一区| 免费日韩视频| 国产激情一区| 欧美搞黄网站| 欧美精品国产一区| 国模精品一区| 午夜久久一区| 日韩激情av在线| 国产一区二区三区四区| 亚州av乱码久久精品蜜桃| 日本在线观看不卡视频| 国产在线一区不卡| 亚洲中午字幕| 久久久91麻豆精品国产一区| 久久久久亚洲| 69堂精品视频在线播放| 日韩综合精品| 四虎精品永久免费| 日韩毛片视频| 亚洲天堂免费| 色综合五月天| 亚洲美女久久| 精品美女视频 | 久久久久久色 | 日韩亚洲一区在线| 蜜桃一区二区三区在线| 精品72久久久久中文字幕| 亚洲欧美日韩精品一区二区| 欧美亚洲人成在线| 久久国产亚洲精品| 青青伊人久久| 性欧美69xoxoxoxo| 欧美激情三区| 老牛国产精品一区的观看方式| 麻豆视频久久| 亚洲色图综合| 久久狠狠婷婷| 国产精品久久久久久久久久齐齐| 免费毛片在线不卡| 久久久国产精品网站| 视频在线观看91| 精品丝袜在线| 美女毛片一区二区三区四区最新中文字幕亚洲 | 麻豆国产精品视频| 先锋亚洲精品| 成人va天堂| 国产极品模特精品一二| 久热综合在线亚洲精品| 偷拍精品精品一区二区三区| 国产欧美精品| 亚洲字幕久久| 岛国av免费在线观看| 日本午夜精品久久久久| 国产亚洲毛片| 99精品在线| 成人一区而且| 欧美激情视频一区二区三区免费 | 欧美91在线| 日韩在线麻豆| 伊人精品一区| а√天堂8资源在线| 国产精品久久久网站| 伊人www22综合色| 91久久国产| 日韩欧美看国产| 精品三级av| 国产精品一区二区三区av| 免费观看在线综合色| 婷婷亚洲五月色综合| 99久久九九| 久久国产主播| 日本免费一区二区三区四区| 美女精品久久| 国产欧美一区二区精品久久久 | 好吊一区二区三区| 久久精品国产www456c0m| 高清av不卡| 国产一区精品福利| 风间由美中文字幕在线看视频国产欧美 | 亚洲福利国产| 欧美日韩国产v| 电影91久久久| 精品国产乱码久久久久久樱花| 欧美日一区二区三区在线观看国产免| 亚洲精品少妇| 日韩精品一卡二卡三卡四卡无卡| 尹人成人综合网| 狠狠爱成人网| 中文亚洲免费| 热久久免费视频| 午夜视频一区二区在线观看| 亚洲乱码视频| 日韩不卡在线观看日韩不卡视频| 日本电影久久久| 国产日韩高清一区二区三区在线| 日本成人手机在线| 69堂免费精品视频在线播放| 国产日韩在线观看视频| 国产精品分类| 久久久久久色 | 国产精品成人**免费视频| 国产高清精品二区| 精品国产乱码久久久久久1区2匹| 精品一区二区男人吃奶| 成人国产精品一区二区网站| 日韩一区电影| 女人天堂亚洲aⅴ在线观看| 国产综合精品一区| 久久最新视频| 欧美视频久久| 麻豆精品新av中文字幕| 97精品在线| 九一精品国产| 亚洲综合专区| 国产精品视频一区二区三区综合 | 国产激情一区| 女生影院久久| 尹人成人综合网| 伊人精品视频| 欧美一区二区三区免费看| 精品三级久久久| 欧美aa一级| 免费日本视频一区| 国产视频一区二区在线播放| 成人精品视频| 中文亚洲欧美| 久久国产麻豆精品| 成人一区而且| 国产婷婷精品| 97成人超碰| 久久精品伊人| 久久天堂av| 蜜桃av一区二区| 国产精品xxx在线观看| 四虎成人av| 亚洲专区一区| 国产精品亚洲四区在线观看 | 亚洲精品乱码久久久久久蜜桃麻豆 | av在线日韩| 四虎在线精品| 国产粉嫩在线观看| 日韩中文字幕亚洲一区二区va在线| 久久国产精品免费一区二区三区| 91亚洲自偷观看高清| 香蕉久久国产| 欧美天堂一区| 久久国产毛片| 91福利精品在线观看| 91看片一区| 日韩精品视频网站| 日韩电影二区| 国产三级一区| 狠狠操综合网| 欧美激情在线精品一区二区三区| 不卡在线一区| 国产精品成人**免费视频| 亚洲一级二级| 国产精品**亚洲精品| 在线视频日韩| 国产 日韩 欧美 综合 一区| 久久久影院免费| 国产免费播放一区二区| 91久久在线| 久久久久久夜| 日韩精品欧美精品| 美女亚洲一区| 国产精品xvideos88|