Search code examples
javaandroidhandlerdelaypostdelayed

Best practice for delaying program execution in Java (Android)


I am making a quiz app for Android.

The user has 30 seconds to answer as many questions as they can.

I create a small gap in execution time between questions so the user can see if they got the question right:

new Handler().postDelayed(new Runnable() {  
   public void run()  { displayNextQuestion(); }
    } , 1000);

At the end of the 30 seconds, the user is supposed to be redirected to a results screen. However, if the 30 seconds expires during that wait time, then the user is brought to the results screen for a moment, only to be redirected back to the next question. How can I disable that moment of wait time once the 30 seconds has elapsed?

Should be a simple answer, I just don't know how to work with threads/execution.

Thanks


Solution

  • You can save your runnable and the handler to instance variables and call myHandler.removeCallbacks(myRunnable) to discard the pending action.