第一种
new Thread(){
@Override
public void run() {
// TODO Auto-generated method stub
super.run();
if (data > 0) {
data--;
try {
sleep(1000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println(data +"S");
}else {
data = 0;
System.out.println("重新获取");
}
}
}.start();
第二种
使用handler的sendMessageDelayed方法实现:
Message msg=handler.obtainMessage(10);
handler.sendMessageDelayed(msg, 1000);
Handler handler = new Handler(){
public void handleMessage(android.os.Message msg) {
if(data > 0){
if(msg.what==10){
System.err.println(data + "S");
}
Message message=handler.obtainMessage(10);
handler.sendMessageDelayed(message, 1000);
data--;
}else{
System.err.println("重新获取");
}
};
};
第三种
使用封装的CountDownTimer实现,这种方式最简单,代码实现也最少
new CountDownTimer (60000, 1000) {
public void onTick(long millisUntilFinished) {
}
第四种
用到Timer
private TimerTask timerTask;
private Timer timer;
private void startTimer() {
// TODO Auto-generated method stub
timerTask = new TimerTask() {
@Override
public void run() {
Message msg = new Message();
msg.what = 0;
handler.sendMessage(msg);
}
};
timer = new Timer();
timer.schedule(timerTask, 0, 1000);
}
/**
* button计时的操作
*/
private int second = 60;
private Handler handler = new Handler() {
public void handleMessage(Message msg) {
if(second >= 1) {
System.out.println(second +"S");
second--;
} else {
System.out.println("重新获取");
timer.cancel();
}
};
};