2014-05-13 10 views
8

Wenn ich meine App durch Drücken der BACK-Taste (OnBackPressed() genannt) schließt, stoppt die CountDownTimer nicht, bis es mit dem Zählen fertig ist. Wie kann ich die CountDownTimerabbrechen(); in meinem onBackPressed()?Probleme zum Abbrechen eines CountDownTimer Android Java

Da, wenn ich meine Anwendung (unten mit Beschreibungen) beenden, will ich nicht mehr Counter Toasts auf meinem Bildschirm.

Auf meinen Code:

boolean network_connected = false; 

Was meine onCreate() in ist:

if (check_network.isInternetAvailable(this)) { 
    network_connected = true; 
    new connect_task_main().execute(""); 
} else { 
    network_connected = false; 
} 

if (network_connected == false) { 
    new CountDownTimer(11000, 1000) { 
     public void onTick(long millisUntilFinished) { 
      global.toast.setText("No Internet Connection!" + "\n" + "Automatic Refresh In: " + millisUntilFinished/1000); //set text for toast 
      global.toast.show(); //show toast 
     } 

     public void onFinish() { 
      if (network_connected == false) { 
       global.cancel_toast(0); //stop all toasts 
       finish(); //quit activity 
       startActivity(new Intent(main_activity.this, main_activity.class)); //start activity 
      } else { 
      } 
     } 
    }.start(); //start the countdowntimer 
} else { 
    network_connected = true; 
} 

onBackPressed() Methode

@Override 
public void onBackPressed() { 
    if (page_number > global.page_number_min) { //does not matter 
     page_number--; //does not matter 
     global.cancel_toast(0); //stop all toasts 
     network_connected = true; 
     finish(); 
    } else { 
     global.cancel_toast(0); 
     network_connected = true; 
     finish(); //quit activity 
     super.onBackPressed(); //quit application 
    } 
} 

Danke.

+0

Versuchen Sie, diese http://stackoverflow.com/a/9324484/28557 –

Antwort

12

Erstellen Sie ein globales Objekt von CountDownTimer z.

Oben auf dem main_activity class set: CountDownTimer timer; danach die folgenden Dinge tun.

timer = new CountDownTimer(11000, 1000) 
     { 
      public void onTick(long millisUntilFinished) 
      { 
      global.toast.setText("No Internet Connection!" + "\n" + "Automatic Refresh In: " + millisUntilFinished/1000); //set text for toast 
      global.toast.show(); //show toast 
      } 

      public void onFinish() 
      { 
       if (network_connected == false) 
       { 
       global.cancel_toast(0); //stop all toasts 
       finish(); //quit activity 
       startActivity(new Intent(main_activity.this, main_activity.class)); //start activity 
       } 
       else 
       { 
       } 
      } 
     }.start(); //start the countdowntimer 
} 

und auf onBackPressed Anruf timer.cancel(); wie

@Override 
public void onBackPressed() 
{ 
    if (page_number > global.page_number_min) 
    { //does not matter 
    page_number--; //does not matter 
    global.cancel_toast(0); //stop all toasts 
    network_connected = true; 
    finish(); 
    } 
    else 
    { 
    global.cancel_toast(0); 
    network_connected = true; 
    finish(); //quit activity 
    super.onBackPressed(); //quit application 
    } 

timer.cancel(); 
} 
+0

Sie das bedeuten? CountDownTimer countDownTimer = new CountDownTimer (11000, 1000) {// code} und in meinem onBackPressed {countDownTimer.cancel(); } –

+0

Ja verwenden Sie ein globales Objekt dort – Apoorv

+0

Jetzt funktioniert es gut, vergessen, CountDownTimer Timer zu setzen; oben auf meiner Hauptklasse. Danke @Apoorv –

Verwandte Themen