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