Cosa succede se il thread handler.postDelayed
è già in esecuzione e devo annullarlo?Come cancellare handler.postDelayed?
risposta
Faccio questo per annullare postDelays, per Android: removeCallbacks rimuove eventuali messaggi in sospeso di Runnable r che si trovano nella coda messaggi.
handler.removeCallbacks(runnableRunner);
o utilizzare per rimuovere tutti i messaggi e le richiamate
handler.removeCallbacksAndMessages(null);
Ulteriori informazioni con snipet: http://stackoverflow.com/questions/5885587/how-to-cancel-handler-in-code – Basher51
Se non si desidera mantenere un riferimento della eseguibile, si potrebbe semplicemente chiamare:
handler.removeCallbacksAndMessages(null);
The official documentation dice :
... Se il token è nullo, al I callback e i messaggi verranno rimossi.
ho avuto un caso in cui avevo bisogno di annullare una postDelayed mentre era in fase di esecuzione, in modo che il codice di cui sopra non ha funzionato per il mio esempio. Quello che ho finito è stato eseguire un controllo booleano all'interno del mio Runnable, quindi quando il codice è stato eseguito dopo il tempo specificato, si sarebbe attivato in base al valore booleano in quel momento e che ha funzionato per me.
public static Runnable getCountRunnable() {
if (countRunnable == null) {
countRunnable = new Runnable() {
@Override
public void run() {
if (hasCountStopped)
getToast("The count has stopped");
}
};
}
return countRunnable;
}
CRONACA - nella mia attività distruggo io uso il codice suggerito da altri sviluppatori, handler.removecallback e conduttore = null; per annullare l'handle solo per mantenere pulito il codice e assicurarsi che tutto venga rimosso.
- 1. Handler.postAtTime vs Handler.postDelayed
- 2. Come mettere in pausa il timer handler.postDelayed() su Android
- 3. Come cancellare/cancellare una variabile di cache
- 4. Come cancellare una stringa?
- 5. Come cancellare un dizionario?
- 6. Come cancellare Tkinter Canvas?
- 7. Come cancellare ImageView correttamente?
- 8. Come backspace o cancellare?
- 9. Come cancellare l'indice ElasticSearch?
- 10. : come cancellare le notifiche?
- 11. Come cancellare: entrambi; correttamente?
- 12. Come cancellare un UIWebView?
- 13. Come cancellare MemoryCache?
- 14. come cancellare grigliaview?
- 15. Come cancellare una password?
- 16. Come cancellare una matrice
- 17. Come cancellare un DatePicker
- 18. Un distruttore - dovrei usare cancellare o cancellare []?
- 19. Come cancellare un hash Perl
- 20. Come cancellare l'input di file
- 21. DBLookupComboBox - Come cancellare l'elemento selezionato?
- 22. Come cancellare $ Errore in PowerShell?
- 23. Come cancellare la cache gradle?
- 24. Come cancellare un array angolare
- 25. Come cancellare la risposta ajax
- 26. Come cancellare il backbone localstorage
- 27. Come cancellare server.log in JBoss?
- 28. Julia: Come cancellare la console
- 29. Java: Come cancellare l'uscita dell'applicazione
- 30. Come posso cancellare da Device.StartTimer?
L'intero thread o solo il messaggio? –
L'intero thread. – Eugene
[Esci] (http://developer.android.com/reference/android/os/HandlerThread.html#quit()) it. –