利用CountDownTimer直接进行倒计时 private long countSeconds;//倒计时秒数 public final ObservableField<String> sendCodeNum = new ObservableField<>();//发送验证码 //参数1,设置倒计时的总时间(毫秒);参数2,设置每次减去多少毫秒 private CountDownTimer timer = new CountDownTimer(60 * 1000, 1000) { //每一次变化调用 @Override public void onTick(long millisUntilFinished) { countSeconds = millisUntilFinished / 1000; sendCodeNum.set(countSeconds + "s"); } //倒数完成后调用 @Override public void onFinish() { countSeconds = 0; sendCodeNum.set(getApplication().getResources().getString(R.string.register_code_more)); isCodeAgain.set(true);//表示可重新发送 } }; //调用的时候直接timer.start(); //为了防止内存泄漏,需要: //1.在activity销毁时将timer销毁 public void 将timerstopTimer() { if (timer != null) { timer.cancel(); timer = null; } } //2.在CountDownTimer的onTick方法中记得判空 activity中: if(!activity.isFinishing()){ //doing something... } fragment中: if(getActivity()!=null){ //doing something... } //3.在配合DialogFragment使用时,如果在onFinish()方法调用了 dismiss()方法让弹框消失,记得 判断getFragmentManager是否为空 @Override public void onFinish() { if(getFragmentManager()!=null){ dismiss(); } }