};
配合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处理,这便是此类的核心。