Android倒计时神器 - CountDownTimer,供大家参考,具体内容如下
啥是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()方法,否则容易出现空指针错误。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持小牛知识库。
我的应用程序检查是否有一个带有日期的文件。 如果有日期,它将计算今天和该(未来)日期之间的差值,并初始化计时器,以X天Y小时Z分S秒的方式倒计时到该日期。 如果没有文件,则用户可以通过按钮选择日期。程序将在文件中存储日期并设置倒计时。 有一个删除按钮可以删除日期并选择其他日期。此删除按钮应取消计时器,使其停止计数。 当我取消计时器时,计时器不会停止。我的计时器滴答作响,但相差2秒,而不是1秒。显示
本文向大家介绍Android中CountDownTimer倒计时器用法实例,包括了Android中CountDownTimer倒计时器用法实例的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了Android中CountDownTimer倒计时器用法。分享给大家供大家参考,具体如下: 在平时我们编程的时候,经常会用到倒计时这个功能,很多人不知道Android已经帮封装好了一个类,往往都自己写。
本文向大家介绍Android CountDownTimer实现定时器和倒计时效果,包括了Android CountDownTimer实现定时器和倒计时效果的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了Android实现定时器和倒计时的具体代码,供大家参考,具体内容如下 直接上代码,相信都看得懂。 Android已经帮封装好了一个类,只不过很多人不知道而已。 代码: 调用的时候很简单
我有两个XML EditTexts。在一个EditText中,用户可以将一个数字作为分钟,在另一个EditText中,可以将一个数字作为秒。单击finish按钮后,seconds EditText应开始倒计时,并每秒更新其文本。 此外,我如何保持更新,直到它达到零分钟零秒?
本文向大家介绍android倒计时控件示例,包括了android倒计时控件示例的使用技巧和注意事项,需要的朋友参考一下 本文为大家分享了android倒计时控件,供大家参考,具体代码如下 希望本文所述对大家学习Android软件编程有所帮助。
所以我用Java创建了一个手机应用程序,上面有一个简单的计时器,从0秒开始到50秒。我如何让这个计时器从50秒开始到0秒。就像一个倒数计时器。请帮帮忙。 }