หากคุณใช้รหัสด้านล่าง (ตามที่ระบุไว้ในคำตอบที่ยอมรับ)
new CountDownTimer(30000, 1000) {
public void onTick(long millisUntilFinished) {
mTextField.setText("seconds remaining: " + millisUntilFinished / 1000);
//here you can have your logic to set text to edittext
}
public void onFinish() {
mTextField.setText("done!");
}
}.start();
มันจะส่งผลให้หน่วยความจำรั่วไหลของอินสแตนซ์ของกิจกรรมที่คุณใช้รหัสนี้หากคุณไม่ได้ล้างข้อมูลอ้างอิงอย่างระมัดระวัง
ใช้รหัสต่อไปนี้
//Declare timer
CountDownTimer cTimer = null;
//start timer function
void startTimer() {
cTimer = new CountDownTimer(30000, 1000) {
public void onTick(long millisUntilFinished) {
}
public void onFinish() {
}
};
cTimer.start();
}
//cancel timer
void cancelTimer() {
if(cTimer!=null)
cTimer.cancel();
}
คุณต้องโทรcTtimer.cancel ()ทุกครั้งที่เรียกใช้ onDestroy () / onDestroyView ()ในการเป็นเจ้าของกิจกรรม / แฟรกเมนต์