扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
本篇内容介绍了“Android倒计时神器分析”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!
成都创新互联公司长期为上千多家客户提供的网站建设服务,团队从业经验10年,关注不同地域、不同群体,并针对不同对象提供差异化的产品和服务;打造开放共赢平台,与合作伙伴共同营造健康的互联网生态环境。为肥城企业提供专业的成都网站设计、网站建设、外贸网站建设,肥城网站改版等技术服务。拥有十载丰富建站经验和众多成功案例,为您定制开发。啥是CountDownTimer?
CountDownTimer是Andorid.os包下一个谷歌为我们封装好的一个倒计时工具。我们吗、平时开发过程中像一些验证码、倒计时的功能,如果自己封装一个倒计时工具就会稍显麻烦。而谷歌这个工具使用起来非常方便。
源码
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();}
构造函数:
两个参数,第一个是总的倒计时时间,第二个是倒计时间隔。比如1秒跳一次该参数就为1000,两个参数的单位都为毫秒。
start():
调用该方法以启动计时器。
cancel():
调用该方法以释放计时器。
重要!一定要在onDestory等回调中cancel()计时器,否则会因为页面被回收计时器还在运作而出现空指针错误!
回调方法:
onTick():
每个时间间隔会回调一次,比如设置了1000ms的间隔,就会每1000ms回调一次这个方法。
onFinish():
在整个计时器结束之后回调。
使用中的一些坑
计时不准的问题
虽然这个工具有针对延迟做了处理,但是因为一些其他原因,导致CountDownTimer开始计时的时候极有可能不从你设定的总时长开始计时。比如你设定的millsInFuture是30000(30s),CountDownTimer其实是从29xxx开始计时的,这样会导致一些Text的UI显示快一秒。解决办法就是在构造的时候就传入一个比30000大一些的数,比如30300.
内存泄漏/空指针问题
CDT内部其实是对Handler有做一个封装,所以一定一定要在回收的时候调用Timer的cnacel()方法,否则容易出现空指针错误。
“Android倒计时神器分析”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注创新互联网站,小编将为大家输出更多高质量的实用文章!
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流