您的位置:首页 > 移动开发 > Android开发

Android倒计时简单方法实现

2013-07-22 15:06 357 查看
以前我们实现一个倒计时功能是如何实现的呢?一般都是创建一个线程来通过消息处理实现更新界面,即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处理,这便是此类的核心。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: