ตัวจับเวลานับถอยหลังของ Android ไม่หยุดในแอปพลิเคชันแบบทดสอบ

ขออภัยสำหรับภาษาอังกฤษที่ไม่ดีของฉัน

สวัสดีทุกคน ฉันได้จัดทำใบสมัครแบบทดสอบซึ่งประกอบด้วยคำถาม 5 ข้อ ฉันได้สร้างหน้า ResultActivity ซึ่งแสดงผลการทดสอบ ฉันได้เพิ่มตัวจับเวลานับถอยหลัง 20 วินาทีสำหรับแต่ละคำถาม เมื่อตัวจับเวลาถอยหลังเสร็จสิ้น ระบบจะย้ายไปยังคำถามถัดไปโดยอัตโนมัติ เมื่อคำถามเสร็จสิ้น ควรย้ายไปที่หน้า ResultActivity เพื่อแสดงผลลัพธ์

ฉันมีปัญหาเดียวเท่านั้น ...

หากตัวจับเวลาถอยหลังไม่สิ้นสุดที่ 0 นาฬิกาจะยังคงทำงานในพื้นหลัง และเมื่อคุณไปที่หน้าจอที่สามที่เรียกว่า ViewAnswerActivity ตัวจับเวลาจะพาฉันกลับไปที่หน้าจอ ResultActivity

ฉันจะหยุดการนับถอยหลังหลังจากไปถึงหน้าจอที่ 3 ได้อย่างไร (กิจกรรมการดูคำตอบ)

ส่วนหนึ่งของรหัส

ConceptActivity.คลาส

TextView textView;
CountDownTimer countDownTimer;

@Override
Protected void onCreate (Bundle savedInstanceState) {
   Super.onCreate (savedInstanceState);
   SetContentView (R.layout.activity_concept);

    TextView = (TextView) findViewById;

     CountDownTimer = new CountDownTimer (20 * 1000,1000) {
         @Override
         Public void onTick (long millisUntilFinished) {
            TextView.setText ("" + millisUntilFinished / 1000);
         }

         @Override
         Public void onFinish () {
             Intent conceptIntent = new Intent (ConceptActivity.this, ResultActivity.class);
             StartActivity (conceptIntent);
         }

     } .start ();
 }



คำตอบ (2)


ปัญหาคือคุณไม่ได้หยุดตัวจับเวลา

          Public void onFinish () {
                        Intent conceptIntent = new Intent (ConceptActivity.this, ResultActivity.class);
                        StartActivity (conceptIntent);
                }

          public void cancel(){ 
                       if(countDownTimer != null)
                      countDownTimer.cancel(); 
                }

person Starlord    schedule 29.12.2016
comment
ฉันใช้ countDownTimer.cancel(); แต่ตัวจับเวลาถอยหลังไม่หยุด - person Marko Diaz; 30.12.2016
comment
เพิ่มวิธีการยกเลิกแล้ว ลองเลย - person Starlord; 30.12.2016
comment
ใช้งานไม่ได้:/ ฉันเปลี่ยนเส้นทางไปที่ ResultActivity.class อีกครั้ง ฉันต้องส่ง ConceptActivity ไปยัง ResultActivity และ ViewAnswerActivity และอยู่ที่หน้าจอที่สาม - person Marko Diaz; 30.12.2016

เพิ่มโค้ดด้านล่างทุกครั้งที่คุณย้ายจากกิจกรรมตัวจับเวลาไปยังกิจกรรมอื่น

myTimer.cancel();
myTimer.purge();

myTimer คือหมายเลขตัวแปรของประเภท Timer

person Aditya    schedule 06.09.2020