private Timer mTimer = null;
private TimerTask mTimerTask = null;
private static int delay = 1 * 1000; // 1s
private static int period = 1 * 1000; // 1s
private static int count = 60;
private static final int INT_UPDATE_TEXTVIEW = 99;
public void bt3(View v) {
startTimer();
}
private void startTimer() {
// TODO Auto-generated method stub
button3.setEnabled(false);
if (mTimer == null) {
mTimer = new Timer();
}
if (mTimerTask == null) {
mTimerTask = new TimerTask() {
@Override
public void run() {
Message message = Message.obtain(handler,
INT_UPDATE_TEXTVIEW);
handler.sendMessage(message);
count--;
}
};
}
if (mTimer != null && mTimerTask != null)
mTimer.schedule(mTimerTask, delay, period);
}
private Handler handler = new Handler() {
public void handleMessage(android.os.Message msg) {
switch (msg.what) {
case INT_UPDATE_TEXTVIEW:
updateTextView();
break;
default:
break;
}
};
};
private void updateTextView() {
// 停止Timer
if (count == 0) {
stopTimer();
return;
}
if (count < 10) {
button3.setText(String.format(
getResources().getString(R.string.sms_timer),
"0" + String.valueOf(count)));
} else {
button3.setText(String.format(
getResources().getString(R.string.sms_timer), count));
}
}
private void stopTimer() {
button3.setEnabled(true);
if (mTimer != null) {
mTimer.cancel();
mTimer = null;
}
if (mTimerTask != null) {
mTimerTask.cancel();
mTimerTask = null;
}
count = 60;
button3.setText(String.format(
getResources().getString(R.string.sms_timer), count));
}
@Override
protected void onDestroy() {
// TODO Auto-generated method stub
super.onDestroy();
stopTimer();
}
<string name="sms_timer">获取验证码(%1$s)</string>