timer = object : CountDownTimer(60000, 1000) {
// 第一个参数是总的倒计时时间
// 第二个参数是每隔多少时间(ms)调用一次onTick()方法
override fun onTick(millisUntilFinished: Long) {
binding!!.getCode.setText((millisUntilFinished / 1000).toString() + "s后重新发送");
binding!!.getCode.setEnabled(false)
}
override fun onFinish() {
binding!!.getCode.setClickable(true)
binding!!.getCode.setText("获取验证码")
}
}.start()
为了防止内存泄露,加入判断和销毁:
1,在CountDownTimer的onTick方法中记得判空
activity中
if(!activity.isFinishing()){
//doing something...
}
fragment中
if(getActivity()!=null){
//doing something...
}
2,在配合DialogFragment使用时,如果在onFinish()方法调用了 dismiss()方法让弹框消失,记得 判断getFragmentManager是否为空
@Override
public void onFinish() {
if(getFragmentManager()!=null){
dismiss();
}
}
3,在使用CountDownTimer时,在宿主Activity或fragment生命周期结束的时候,记得调用timer.cancle()方法
@Override
public void onDestroy() {
if(timer!=null){
timer.cancel();
timer = null;
}
super.onDestroy();
}