C'est une réponse tardive, mais voici une méthode différente pour les cas où vous ne voulez supprimer qu'une catégorie spécifique d'exécutables du gestionnaire (c'est-à-dire, dans le cas de l'OP, supprimer seulement l'animation de fermeture, en laissant les autres exécutables dans la file d'attente) :
int firstToken = 5;
int secondToken = 6;
//r1 to r4 are all different instances or implementations of Runnable.
mHandler.postAtTime(r1, firstToken, 0);
mHandler.postAtTime(r2, firstToken, 0);
mHandler.postAtTime(r3, secondToken, 0);
mHandler.removeCallbacksAndMessages(firstToken);
mHandler.postAtTime(r4, firstToken, 0);
Le code ci-dessus exécutera "r3" et ensuite "r4" seulement. Cela vous permet de supprimer une catégorie spécifique de runnables définis par votre jeton, sans avoir besoin de détenir des références aux runnables eux-mêmes.
Remarque : le code source compare les jetons en utilisant uniquement l'opérande "==" (il n'appelle pas .equals()), il est donc préférable d'utiliser des ints/Integers plutôt que des chaînes de caractères pour le jeton.
0 votes
Attention à cette réponse si vous utilisez Kotlin : stackoverflow.com/a/30905295/2736039 J'ai essayé et j'ai rencontré ce problème (uniquement en Kotlin) : stackoverflow.com/questions/62405834/