当前位置: 代码迷 >> Android >> 急点击1按钮后,要隔1分钟才能再次操作一次,求算法实例
  详细解决方案

急点击1按钮后,要隔1分钟才能再次操作一次,求算法实例

热度:93   发布时间:2016-04-28 02:36:54.0
急!点击一按钮后,要隔1分钟才能再次操作一次,求算法实例
要做一个发送验证码的功能,点击一按钮后,给用户的手机发送一个验证码,点完一次后,要做倒计时显示,60秒后按钮才能重新操作
求一个例子
------解决思路----------------------
不是有timer吗,点击后,enable=false,开始计时,到点enable=true
------解决思路----------------------
同意楼上,计时器控制你的boolean标志位,简单粗暴有效
------解决思路----------------------
请百度:CountDownTimer
------解决思路----------------------


//这是倒计时线程,每隔1秒会通知一次UI线程更新
private class TimerTask extends AsyncTask<String, String, String> {

@Override
protected void onPreExecute() {
super.onPreExecute();
mVCodeBtn.setBackgroundResource(R.color.text_gray);
mVCodeBtn.setClickable(false);
}

@Override
protected String doInBackground(String... params) {
for (int i = 60; i >= 0; i--) {
onProgressUpdate(String.valueOf(i));
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}

return null;
}

@Override
protected void onProgressUpdate(String... values) {
Message msg = new Message();
msg.what = Integer.valueOf(values[0]);
handler.sendMessage(msg);
super.onProgressUpdate(values);
}

}
// 下面是UI线程收到消息后更新,当为0时倒计时结束,会重新打开按钮点击
private Handler handler = new Handler() {

@Override
public void handleMessage(Message msg) {
if (msg.what == 0) {
mVCodeBtn.setBackgroundResource(R.color.patient_theme);
mVCodeBtn.setClickable(true);
mVCodeBtn.setText(R.string.btn_verification_code);
} else {
mVCodeBtn.setText("重新获取 " + msg.what);
}

}

};

------解决思路----------------------
话说你这里还写个handler干吗?直接在onprogressupdate里面更新不就行了?
引用:

//这是倒计时线程,每隔1秒会通知一次UI线程更新
private class TimerTask extends AsyncTask<String, String, String> {

@Override
protected void onPreExecute() {
super.onPreExecute();
mVCodeBtn.setBackgroundResource(R.color.text_gray);
mVCodeBtn.setClickable(false);
}

@Override
protected String doInBackground(String... params) {
for (int i = 60; i >= 0; i--) {
onProgressUpdate(String.valueOf(i));
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}

return null;
}

@Override
protected void onProgressUpdate(String... values) {
Message msg = new Message();
msg.what = Integer.valueOf(values[0]);
handler.sendMessage(msg);
super.onProgressUpdate(values);
}

}
// 下面是UI线程收到消息后更新,当为0时倒计时结束,会重新打开按钮点击
private Handler handler = new Handler() {

@Override
public void handleMessage(Message msg) {
if (msg.what == 0) {
mVCodeBtn.setBackgroundResource(R.color.patient_theme);
mVCodeBtn.setClickable(true);
mVCodeBtn.setText(R.string.btn_verification_code);
} else {
mVCodeBtn.setText("重新获取 " + msg.what);
}

}

};
  相关解决方案