服务器之家:专注于VPS、云服务器配置技术及软件下载分享
分类导航

PHP教程|ASP.NET教程|Java教程|ASP教程|编程技术|正则表达式|C/C++|IOS|C#|Swift|Android|VB|R语言|JavaScript|易语言|vb.net|

服务器之家 - 编程语言 - Android - Android倒计时神器(CountDownTimer)

Android倒计时神器(CountDownTimer)

2022-11-15 15:44dsdisenc Android

这篇文章主要为大家详细介绍了Android倒计时神器CountDownTimer,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

Android倒计时神器 - CountDownTimer,供大家参考,具体内容如下

啥是CountDownTimer?​

CountDownTimer是Andorid.os包下一个谷歌为我们封装好的一个倒计时工具。我们吗、平时开发过程中像一些验证码、倒计时的功能,如果自己封装一个倒计时工具就会稍显麻烦。而谷歌这个工具使用起来非常方便。

源码

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
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()方法,否则容易出现空指针错误。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持服务器之家。

原文链接:https://blog.csdn.net/weixin_42456225/article/details/104070577

延伸 · 阅读

精彩推荐