J'utilise handler.postDelayed()
pour créer une période d'attente avant la prochaine étape de mon application. Pendant la période d'attente, j'affiche une boîte de dialogue avec une barre de progression et un bouton Annuler .
Mon problème est que je ne peux pas trouver un moyen d' annuler la tâche postDelayed avant la fin du temps.
Réponses:
Je fais cela pour publier un runnable retardé:
Et ceci pour le supprimer:
myHandler.removeCallbacks(myRunnable);
la source
Dans le cas où plusieurs runnables internes / anonymes sont passées au même gestionnaire et que vous souhaitez tout annuler lors d'une même utilisation d'événement
handler.removeCallbacksAndMessages(null);
la source
removeCallbacks(callback)
pour supprimer un rappel spécifiqueUne autre façon consiste à gérer le Runnable lui-même:
la source
r
dans ce cas), ce qui signifie que je peux l'utilisermyHandler.removeCallbacks(r);
. Si Runnable est anonyme, le drapeau sera un membre de la classe englobante, ce qui signifie que j'ai besoin d'une référence à cet objet pour changer le drapeau, ce qui signifie que je devrai de nouveau avoir der
toute façon, ce qui signifie que je peux le fairemyHandler.removeCallbacks(r);
. Et si je le fais,myHandler.removeCallbacks(r);
ce drapeau n'est pas du tout nécessaire. Suis-je en train de manquer quelque chose?Voici une classe fournissant une méthode d'annulation pour une action retardée
la source
Cela a fonctionné pour moi lorsque j'ai appelé CancelCallBacks (ceci) à l'intérieur du postnable retardé en le remettant via un booléen
la source
J'espère que cette aide essentielle https://gist.github.com/imammubin/a587192982ff8db221da14d094df6fb4
MainActivity comme Screen Launcher avec gestionnaire et fonction runnable, la page Runnable run to login ou la page de flux avec l'utilisateur de connexion de préférence de base avec firebase.
la source