Android倒计时神器(CountDownTimer)
时间:2022-07-27
本文章向大家介绍Android倒计时神器(CountDownTimer),主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
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()方法,否则容易出现空指针错误。
以上就是本文的全部内容,希望对大家的学习有所帮助。
- 18/03/18 04:53:44 WARN TaskSchedulerImpl: Initial job has not accepted any resources; check your clu
- 技术干货 | Hadoop3.0稳定版安装攻略来啦!
- ios逆向工具MonkeyDev简介
- 自定义下拉列表
- 身份证号码验证算法
- 技术干货 | hive安装部署
- js图片的预加载功能
- 简单理解通过原型继承
- 为我们的Web添加HTTPS支持
- 技术干货 | hbase配置详解
- javascript事件详解
- 使用Spring Boot开发Web项目
- HTML head 头标签 总结
- DIY一个Spring Boot的自动配置
- java教程
- Java快速入门
- Java 开发环境配置
- Java基本语法
- Java 对象和类
- Java 基本数据类型
- Java 变量类型
- Java 修饰符
- Java 运算符
- Java 循环结构
- Java 分支结构
- Java Number类
- Java Character类
- Java String类
- Java StringBuffer和StringBuilder类
- Java 数组
- Java 日期时间
- Java 正则表达式
- Java 方法
- Java 流(Stream)、文件(File)和IO
- Java 异常处理
- Java 继承
- Java 重写(Override)与重载(Overload)
- Java 多态
- Java 抽象类
- Java 封装
- Java 接口
- Java 包(package)
- Java 数据结构
- Java 集合框架
- Java 泛型
- Java 序列化
- Java 网络编程
- Java 发送邮件
- Java 多线程编程
- Java Applet基础
- Java 文档注释