Android倒计时简单方法实现

以前我们实现一个倒计时功能是如何实现的呢?一般都是创建一个线程来通过消息处理实现更新界面,即Handler handler=new Handler(){


@Override
public void handleMessage(Message msg) {
// TODO Auto-generated method stub
super.handleMessage(msg);
//do something to refresh view
}

}

};

配合new Thread(new Runnable() {

@Override
public void run() {
// TODO Auto-generated method stub
try {
while(true){
Thread.sleep(1000);
handler.sendEmptyMessage(0);
}

} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}).start();

但现在并不是用它实现,有更简单的方法,人嘛就是要学会偷懒,现在新认识一个类CountDownTimer。它只要调用

           new CountDownTimer(30000,1000) {

@Override
public void onTick(long millisUntilFinished) {
// TODO Auto-generated method stub
tx.setText(millisUntilFinished/1000+"秒");

}

@Override
public void onFinish() {
// TODO Auto-generated method stub
tx.setText("done!!!");
}
}.start();即可实现倒计时。

主要是重写onTick和onFinsh这两个方法,onFinish()中的代码是计时器结束的时候要做的事情;onTick(Long m)中的代码是你倒计时开始时要做的事情,参数m是直到完成的时间,构造方法两个参数中,前者是倒计的时间数,后者是倒计每秒中间 的间隔时间,都是以毫秒为单位。例如要倒计时30秒,每秒中间间隔时间是1秒,两个参数可以这样写 CountDownTimer(30000,1000) 。 值得注意的一点是onTick方法是上锁的(synchronized),也就是说要是上一次调用未完成,则不会启动。这个实现相应的执行倒计时间隔相比显著。

      将后台线程的创建和Handler队列封装成为了一个方便的类调用。省去自己创建线程以及handler处理,这便是此类的核心。




  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值