真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

倒計(jì)時(shí)android,倒計(jì)時(shí)天數(shù)

Android將倒計(jì)時(shí)做到極致

在開發(fā)倒計(jì)時(shí)功能時(shí)往往我們會(huì)為了方便直接使用CountDownTimer或者使用Handler做延時(shí)來實(shí)現(xiàn),當(dāng)然CountDownTimer內(nèi)部封裝也是使用的Handler。

創(chuàng)新互聯(lián)堅(jiān)持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:成都網(wǎng)站設(shè)計(jì)、成都做網(wǎng)站、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿足客戶于互聯(lián)網(wǎng)時(shí)代的新豐網(wǎng)站設(shè)計(jì)、移動(dòng)媒體設(shè)計(jì)的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!

如果只是做次數(shù)很少的倒計(jì)時(shí)或者不需要精確的倒計(jì)時(shí)邏輯那倒沒關(guān)系,比如說我只要倒計(jì)時(shí)10秒,或者我大概5分鐘請求某個(gè)接口

但是如果是需要做精確的倒計(jì)時(shí)操作,比如說手機(jī)發(fā)送驗(yàn)證碼60秒,那使用現(xiàn)有的倒計(jì)時(shí)方案就會(huì)存在問題。可能有些朋友沒有注意到這一點(diǎn),下面我們就來簡單分析一下現(xiàn)有倒計(jì)時(shí)的問題。

這個(gè)可能是用得最多的,因?yàn)榉奖懵?。但其?shí)倒計(jì)時(shí)每一輪倒計(jì)時(shí)完之后都是存在誤差的,如果看過CountDownTimer的源碼你就會(huì)知道,他的內(nèi)部是有做 校準(zhǔn)操作 的。(源碼很簡單這里就不分析了)

但是如果你認(rèn)真的測試過CountDownTimer,你就會(huì)發(fā)現(xiàn),即便它內(nèi)部有做校準(zhǔn)操作,他的沒一輪都是有偏差,只是他最后一次倒計(jì)時(shí)完之后的總共時(shí)間和開始倒計(jì)時(shí)的時(shí)間相比沒偏差。

什么意思呢,意思就是1秒,2.050秒,3.1秒......,這樣的每輪偏差,導(dǎo)致他會(huì)出現(xiàn)10.95秒,下一次12秒的情況,那它的回調(diào)中如果你直接做取整就會(huì)出現(xiàn)少一秒的情況,但實(shí)際是沒少的。

這只是其中的一個(gè)問題,你可以不根據(jù)它的回調(diào)做展示,自己用一個(gè)整形累加做展示也能解決。但是他還有個(gè)問題,有概率直接出現(xiàn)跳秒,就是比如3秒,下次直接5秒,這是實(shí)際的跳秒,是少了一次回調(diào)的那種。

跳秒導(dǎo)致你如果直接使用它可能會(huì)大問題,你可能自測的時(shí)候沒發(fā)現(xiàn),到時(shí)一上線應(yīng)用在用戶那概率跳秒,那就蛋疼了。

不搞這么多花里胡哨的,直接使用Handler來實(shí)現(xiàn),會(huì)有什么問題。

因?yàn)橹苯邮褂胔andler來實(shí)現(xiàn),沒有校準(zhǔn)操作,每次循環(huán)會(huì)出現(xiàn)幾毫秒的誤差,雖然比CountDownTimer的十幾毫秒的誤差要好, 但是在基數(shù)大的倒計(jì)時(shí)情況下誤差會(huì)累計(jì),導(dǎo)致最終結(jié)果和現(xiàn)實(shí)時(shí)間差幾秒誤差,時(shí)間越久,誤差越大

直接使用Timer也一樣,只不過他每輪的誤差更小,幾輪才有1毫秒的誤差,但是沒有校準(zhǔn)還是會(huì)出現(xiàn)誤差累計(jì),時(shí)間越久誤差越大。

既然無法直接使用原生的,那我們就自己做一個(gè)。

我們基于Handler進(jìn)行封裝,從上面可以看出主要為了解決兩個(gè)問題,時(shí)間校準(zhǔn)和跳秒。自己寫一個(gè)CountDownTimer

思路就是在倒計(jì)時(shí)開始前獲取一次SystemClock.elapsedRealtime(),沒輪倒計(jì)時(shí)再獲取一次SystemClock.elapsedRealtime()相減得到誤差,根據(jù)delay校準(zhǔn)。然后使用while循壞來處理跳秒的操作,與原生的CountDownTimer不同,這里如果跳了多少秒,就會(huì)返回多少次回調(diào)。

Android倒計(jì)時(shí)怎么實(shí)現(xiàn)

安卓實(shí)現(xiàn)同時(shí)多個(gè)倒計(jì)時(shí)效果的步驟:

我們首先需要在輸入框中輸入一個(gè)秒數(shù),比如:12,然后獲取輸入框中的值,顯示在一個(gè)TextView中;

點(diǎn)擊“開始倒計(jì)時(shí)”按鈕,每隔一秒鐘,秒數(shù)減1,然后顯示在TextView中;

點(diǎn)擊“停止倒計(jì)時(shí)”按鈕,計(jì)時(shí)器停止運(yùn)行,當(dāng)再次點(diǎn)擊“開始倒計(jì)時(shí)”按鈕,計(jì)時(shí)器繼續(xù)運(yùn)行。

平時(shí)用的每個(gè)商品都應(yīng)該有兩個(gè)屬性值,這里叫它deadLine和isOverdue吧,表示商品的到期時(shí)間和是否到期,那么倒計(jì)時(shí)可以考慮這么實(shí)現(xiàn):設(shè)置一個(gè)主計(jì)時(shí)器,每隔1秒發(fā)出消息告訴GridView現(xiàn)在的時(shí)間,GridView的Item獲得這個(gè)時(shí)間之后就和deadLine比較,如果已經(jīng)到deadline了,就把數(shù)據(jù)源中的這項(xiàng)標(biāo)記成已到期(修改isOverdue的值為true);沒到deadline,就計(jì)算還差多少時(shí)間,顯示到GridView的Item里。

android中怎樣設(shè)置倒計(jì)時(shí)

你好,

首先需要在輸入框中輸入一個(gè)秒數(shù),比如:12,然后獲取輸入框中的值,顯示在一個(gè)TextView中;點(diǎn)擊“開始倒計(jì)時(shí)”按鈕,每隔一秒鐘,秒數(shù)減1,然后顯示在TextView中;點(diǎn)擊“停止倒計(jì)時(shí)”按鈕,計(jì)時(shí)器停止運(yùn)行,當(dāng)再次點(diǎn)擊“開始倒計(jì)時(shí)”按鈕,計(jì)時(shí)器繼續(xù)運(yùn)行。


當(dāng)前文章:倒計(jì)時(shí)android,倒計(jì)時(shí)天數(shù)
本文網(wǎng)址:http://weahome.cn/article/dsesjos.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部