Co jeśli mam już wątek handler.postDelayed
w trakcie wykonywania i muszę go anulować?Jak anulować handler.postDelayed?
Odpowiedz
Robię to, aby anulować postDelays, za Android: removeCallbacks usuwa wszystkie oczekujące posty Runnable r, które są w kolejce wiadomości.
handler.removeCallbacks(runnableRunner);
lub użyć, aby usunąć wszystkie wiadomości i zwrotnych
handler.removeCallbacksAndMessages(null);
Więcej informacji z snipet: http://stackoverflow.com/questions/5885587/how-to-cancel-handler-incode – Basher51
Jeśli nie chcesz zachować odniesienie do runnable, można po prostu zadzwonić:
handler.removeCallbacksAndMessages(null);
The official documentation mówi :
... Jeśli token ma wartość zero, al l zwroty i wiadomości zostaną usunięte.
Miałem instancję, w której musiałem anulować postDelayed podczas jego pracy, więc powyższy kod nie działał dla mojego przykładu. To, co w końcu robiłem, polegało na sprawdzeniu boolowskim wewnątrz mojego Runnable, więc kiedy kod został wykonany po upływie określonego czasu, byłby uruchamiany w oparciu o wartość boolowską w danym momencie i to dla mnie.
public static Runnable getCountRunnable() {
if (countRunnable == null) {
countRunnable = new Runnable() {
@Override
public void run() {
if (hasCountStopped)
getToast("The count has stopped");
}
};
}
return countRunnable;
}
FYI - w mojej działalności zniszczyć zrobić użyć kodu sugerowane przez innych programistów, handler.removecallback i handler = null; aby anulować uchwyt, aby zachować czystość kodu i upewnić się, że wszystko zostanie usunięte.
- 1. Jak zatrzymać timer handler.postDelayed() na Androidzie
- 2. Jak anulować/anulować żądanie jQuery AJAX?
- 3. Jak anulować anulowanieToken
- 4. Jak anulować JobIntentService
- 5. Jak anulować Alamofire.upload
- 6. Jak anulować żądanie http
- 7. Jak anulować UIWebView?
- 8. Jak anulować zatwierdzenie?
- 9. Jak anulować krycie elementu potomnego?
- 10. Jak anulować zdarzenie ComboBox SelectionChanged?
- 11. Jak anulować zadanie w oczekiwaniu?
- 12. Jak anulować alarm z AlarmManager
- 13. Jak anulować wykonanie timera sprężynowego
- 14. iPhone jak anulować zatrzymania performSelector
- 15. Jak mogę anulować żądanie Ajax?
- 16. jak zatrzymać/anulować android CountDownTimer
- 17. Jak mogę anulować zależności NSOperation?
- 18. Jak anulować Files.copy() w Javie?
- 19. Jak anulować żądanie w BeforeSendRequest
- 20. IEx - Jak anulować polecenie multiline?
- 21. C# WaitHandle anulować WaitAll
- 22. Knockout - anulować zmianę zdarzenia?
- 23. Jak anulować operację przeciągania znacznika mapy google?
- 24. Jak anulować ten powtarzający się alarm?
- 25. Jak anulować przejście połączone z UIButtonem
- 26. Facebook API - Jak anulować żądanie wykresu
- 27. Jak anulować oczekiwanie w select() na Windows
- 28. Jak anulować kompletną przyszłość Java 8?
- 29. Jak anulować/przerwać żądanie ajax w axios
- 30. Jak anulować zapytanie postgres w java/JDBC
Cały wątek lub po prostu wiadomość? –
Cały wątek. – Eugene
[Zamknij] (http://developer.android.com/reference/android/os/HandlerThread.html#quit()) it. –