Ich verwende handler.postDelayed()
, um eine Wartezeit zu erstellen, bevor die nächste Phase meiner App stattfindet. Während der Wartezeit wird ein Dialogfeld mit Fortschrittsbalken und Abbrechen- Schaltfläche angezeigt.
Mein Problem ist, dass ich keine Möglichkeit finden kann, die postDelayed- Aufgabe vor Ablauf der Zeit abzubrechen .
Antworten:
Ich mache das, um eine verzögerte Runnable zu posten:
Und das, um es zu entfernen:
myHandler.removeCallbacks(myRunnable);
quelle
Falls Sie mehrere innere / anonyme Runnables an denselben Handler übergeben haben und alle bei derselben Ereignisverwendung abbrechen möchten
handler.removeCallbacksAndMessages(null);
quelle
removeCallbacks(callback)
an, um einen bestimmten Rückruf zu entfernenEine andere Möglichkeit besteht darin, das Runnable selbst zu handhaben:
quelle
r
in diesem Fall) einen Verweis darauf habe, was bedeutet, dass ich ihn verwenden kannmyHandler.removeCallbacks(r);
. Wenn der Runnable anonym ist, ist das Flag ein Mitglied in der einschließenden Klasse, was bedeutet, dass ich einen Verweis auf dieses Objekt benötige, um das Flag zu ändern, was bedeutet, dass ichr
sowieso wieder haben muss, was bedeutet, dass ich es tun kannmyHandler.removeCallbacks(r);
. Und wenn ich das tue,myHandler.removeCallbacks(r);
ist eine solche Flagge überhaupt nicht notwendig. Vermisse ich etwasHier ist eine Klasse, die eine Abbruchmethode für eine verzögerte Aktion bereitstellt
quelle
Es hat bei mir funktioniert, als ich CancelCallBacks (this) innerhalb des Post-Delayed Runnable aufgerufen habe, indem ich es über einen Booleschen Wert übergeben habe
quelle
Hoffe, diese wichtige Hilfe https://gist.github.com/imammubin/a587192982ff8db221da14d094df6fb4
MainActivity als Screen Launcher mit Handler & Runnable-Funktion, Runnable Run to Login-Seite oder Feed-Seite mit Basiseinstellungs-Login-Benutzer mit Firebase.
quelle