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处理,这便是此类的核心。
@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处理,这便是此类的核心。
相关文章推荐
- android倒计时的简单实现方法
- Android中验证码倒计时的简单实现方法示例
- jquery简单倒计时实现方法
- Android实现计时与倒计时(限时抢购)的几种方法
- Android 有道词典的简单实现方法介绍
- Android实现计时与倒计时(限时抢购)的几种方法
- Android开发之定义内部类简单实现60s倒计时
- android 实现时钟的简单方法
- android实现倒计时,最简单实现RecyclerView倒计时+SwipeRefreshLayout下拉刷新
- Android---验证码倒计时的简单实现
- 实现Android计时与倒计时方法
- Android 实现夜间模式的快速简单方法实例详解
- Android三种超简单办法,实现按钮倒计时
- Android实现计时与倒计时(限时抢购)的几种方法 .
- Android实现计时与倒计时的几种方法
- Android实现计时与倒计时的几种方法
- 【Android开发经验】利用反射机制,获取类的字段、方法、并实现简单调用
- Angular.js实现获取验证码倒计时60秒按钮的简单方法
- jsp倒计时简单实现方法
- handler的使用---如何实现Android计时与倒计时的几种方法