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

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