Это поздний ответ, но вот другой метод, когда вы только хотите удалить определенную категорию runnables из обработчика (то есть в случае OP, всего удалить тесную анимацию, оставляя другие runnables в очереди):
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);
Приведенный выше код выполнит «r3», а затем «r4». Это позволяет удалить определенную категорию runnables, определенную вашим токеном, без необходимости хранить ссылки на сами runnables.
Примечание: исходный код сравнивает токены, используя только операнд «==» (он не вызывает .equals()), поэтому лучше всего использовать ints/integers вместо строк для токена.
Можно ли удалить обратные вызовы для анонимных ходовых файлов? –
Я так не думаю ... вам придется использовать не анонимные. В противном случае вы не сможете ссылаться на них в будущем. – Cristian
См. Ответ @ NameSpace. Вы можете удалить ожидающие запуска, если вы отправляете runnable с помощью токена. Или вы можете использовать метод Daniel L. для удаления всех обратных вызовов/сообщений с использованием нулевого токена. – vman