Questa è una risposta in ritardo, ma qui è un metodo diverso per cui solo si desidera rimuovere una specifica categoria di runnables dal gestore (ad esempio nel caso di OP, è sufficiente rimuovere la stretta di animazione, lasciando altri runnables in coda):
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);
Il codice precedente eseguirà solo "r3" e quindi "r4". Ciò ti consente di rimuovere una categoria specifica di runnables definiti dal tuo token, senza la necessità di mantenere alcun riferimento ai runnables stessi.
Nota: il codice sorgente confronta i token utilizzando solo l'operando "==" (non chiama .equals()), quindi è meglio utilizzare ints/Integers anziché stringhe per il token.
È possibile rimuovere i callback per i runnable anonimi? –
Io non la penso così ... dovrai usare quelli non anonimi. Altrimenti non sarai in grado di farvi riferimento in futuro. – Cristian
Vedere la risposta di @ NameSpace. Puoi rimuovere i runnable in sospeso se pubblichi il runnable con un token. Oppure puoi usare il metodo di Daniel L. di rimuovere tutti i callback/messaggi usando un token nullo. – vman