CountDownTimer实现验证码倒计时

 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();
    }

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章