Comment supprimer les messages retardés avant qu'ils arrivent à un Gestionnaire?
Mon Problème est que j'ai besoin d'envoyer des messages avec un délai de 1 seconde. Le gestionnaire procède alors à un peu d'action, vous obtenez l'image.
Il y a néanmoins des conditions dans lesquelles le message déjà envoyé doit être supprimée ( avant la seconde écoulé ) pour empêcher le gestionnaire de faire quoi que ce soit. Je ne pouvais pas comprendre comment le faire ( ou si c'est encore possible ), donc Si quelqu'un de vous a une idée, s'il vous plaît laissez-moi savoir..
OriginalL'auteur moritz | 2009-12-28
Vous devez vous connecter pour publier un commentaire.
Il n'y a rien d'effrayant à propos de la
removeMessages()
méthodes; ils sont parfaitement sûrs. Le cadre s'appuie fortement sur ces méthodes, et ils sont utilisés dans de nombreux de nombreux endroits, en particulier dans les widgets par défaut (View
,ListView
, etc.) C'est beaucoup mieux que de construire uneHandler
qui ne tient pas compte des messages spécifiques. C'est de la programmation, de ne pas aller avec vos sentiments :pla dernière phrase de vôtre a fait ma journée, clairement. Mais en outre, je suis également d'accord avec commonsaware que la documentation est vraiment insuffisant dans ce domaine, peut être que je devrais déposer un billet.
Il n'y a aucune raison d'avoir un "quoi" lorsque vous postez un Exécutable, il suffit d'utiliser removeCallback() pour cela. Qu'est-ce exactement est pas garanti à partir de la documentation?
OriginalL'auteur Romain Guy
De nombreux développeurs et une grande partie du code source, vous trouverez montrera les gens qui passent des fonctions anonymes pour un gestionnaire, donc je pense que dans certains cas, vous pouvez peut-être pas comment les supprimer. Une solution simple est de déclarer votre exécutable, comme vous le feriez pour tout autre objet, et de garder un pointeur qui peut être utilisé pour effacer toute instance de celle-ci à partir du Gestionnaire de file d'attente.
...
....
....
OriginalL'auteur Adrian Lopez
En fait, vous devriez envisager la mise en œuvre de
handler.removeMessages(int, obj)
. Si l'obj est un objet lié à l'autoboxing, vous rencontrerez un problème de la mise en œuvre d'androidMessageQueue
.Pour l'extrait de code suivant, le removeMessages ne fonctionne pas comme un résultat de l'auto-boxing, boxe-conversion et la mise en œuvre de MessageQueue à l'aide de p.obj == objet de comparer objet.
Ref ce post.
OriginalL'auteur York