2017-03-04 5 views
0

Ich möchte die Verzögerung/Absicht von der Verarbeitung stoppen, wenn die Zurück-Taste gedrückt wird. Ich habe einige Threads durchsucht, aber ich habe nicht die gleiche Handler Logik, denke ich. Ich entschuldige mich, wenn es so ist. HierAndroid - Handler - Wie man die Absicht stoppt?

ist der Code, den ich mit gerade arbeite:

else { 

       new Handler().postDelayed(new Runnable() { 
        @Override 
        public void run() { 

         Intent intent = new Intent(MainActivity.this, PollWebView_Gilmore.class); 
         startActivity(intent); 
         finish(); 

        } 

       }, 10000); 
+0

Wenn Sie das Handler nicht brauchen entfernt eine Verzögerung nur und hält nur die Absicht –

+0

Code perfekt ist dann, was ist das Problem? bitte erkläre dein Problem –

+0

@AbhishekSingh - Ich möchte die Verzögerung/Absicht abbrechen, wenn der Benutzer zurück drückt. –

Antwort

1

Sie haben einen Verweis auf speichern sowohl die Handler und Ihre Runnable irgendwo, und dann können Sie die removeCallbacks(Runnable) Methode auf dem Handler verwenden die abbrechen ausstehende Anfrage.

Beispielcode:

public class MainActivity extends AppCompatActivity { 

    private Handler handler = new Handler(); 

    private Runnable runnable = new Runnable() { 
     @Override 
     public void run() { 
      Intent intent = new Intent(MainActivity.this, MainActivity.class); 
      startActivity(intent); 
      finish(); 
     } 
    }; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     Button button = (Button) findViewById(R.id.button); 
     button.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       handler.postDelayed(runnable, 5000); 
      } 
     }); 
    } 

    @Override 
    public void onBackPressed() { 
     super.onBackPressed(); 
     handler.removeCallbacks(runnable); 
    } 

} 
+0

Wie stelle ich "handler.removeCallbacks (runnable);" innen onBackPressed()? –

+0

Ich habe meiner Antwort ein Beispiel hinzugefügt. – zsmb13

+0

Danke. Ich habe bereits eine Funktion für "onBackPressed();" soll ich das einfach hinzufügen? –

0

Wenn Sie etwas mit der Absicht, auf dem Rücken pressed.You tun wollen, können onBackPressed außer Kraft setzen() -Methode.

+0

Wie lege ich "handler.removeCallbacks (runnable);" innen onBackPressed()? –

+0

@Override public void onBackPressed() { super.onBackPressed(); handler.removeCallbacks (runnable); } – Jack

1

Wenn Sie keine Verzögerung benötigen, warum verwenden Sie einen Handler? Einfach entfernen!

Rufen Sie diese direkt

Intent intent = new Intent(MainActivity.this, PollWebView_Gilmore.class); 
startActivity(intent); 
finish(); 

Wenn Sie Ihren Rücken-Taste gedrückt wird!

Sie können auch eine Idee erhalten, indem Sie unter den Posts lesen.

Android: Proper Way to use onBackPressed() with Toast

How to run a Runnable thread in Android?

+0

Wie stelle ich "handler.removeCallbacks (runnable);" innen onBackPressed()? –