How to remove a runnable from a handler object added by postDelayed?
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?
Solution 1:
Just use the removeCallbacks(Runnable r)
method.
Solution 2:
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.