I have an "open" animation and am using Handler.postDelayed(Runnable, delay)
to trigger a "close" animation after a short delay. However, during the time between open and close, there is possibly another animation triggered by a click.
My question is, how would I cancel the "close" animation in the handler?
Just use the removeCallbacks(Runnable r) method.
removecallback and handler = null; to cancel out the handle just to keep the code clean and make sure everything will be removed.
postDelayed(Runnable r, Object token, long delayMillis) Causes the Runnable r to be added to the message queue, to be run after the specified amount of time elapses. final void. removeCallbacks(Runnable r) Remove any pending posts of Runnable r that are in the message queue.
Just use the removeCallbacks(Runnable r)
method.
Cristian's answer is correct, but as opposed to what is stated in the answer's comments, you actually can remove callbacks for anonymous Runnables
by calling removeCallbacksAndMessages(null);
As stated here:
Remove any pending posts of callbacks and sent messages whose obj is token. If token is null, all callbacks and messages will be removed.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With