Ho un HandlerThread, a cui continuo a postare una eseguibile ogni 5 secondi. Qualcosa di simile a questo:Come chiudere il looper di HandlerThread in modo sicuro
HandlerThread thread = new HandlerThread("MyThread");
thread.start();
Handler handler = new Handler(thread.getLooper());
handler.post(new Runnable() {
public void run() {
//...
handler.postDelayed(this, 5000);
}
});
ho bisogno di uscire dal crochet ad un certo punto, dopo 60 secondi o qualcosa del genere .. quindi scrivo:
mainHandler = new Handler(Looper.myLooper()); //main thread's
mainHandler.postDelayed(new Runnable() {
@Override
public void run() {
thread.getLooper().quit();
}
}, 60000);
penso che questo fa sì che il crochet di smettere bruscamente , così ho iniziare a ricevere questo "avvertimento" messaggi:
W/MessageQueue (3726): java.lang.RuntimeException: Handler (android.os.Handler) {} 4823dbf8 l'invio di un messaggio a un gestore su un morto filo
voglio evitare questo msg di errore, ho pensato che avrei potuto risolverlo utilizzando il metodo Looper.quitSafely()
.. ma ho controllato il API e non è più a disposizione. Qualcuno sa cosa gli è successo? (Non è deprecato come altri metodi).
C'è un modo per uscire in sicurezza dal crochet? Grazie!
interrompere l'invio di handler.postDelayed (questa, 5000) in ritardo Runnables – pskink
come l'utilizzo di una bandiera o qualcosa del genere? – sundie
forse potresti provare thread.getLooper(). QuitSafely()? – Richard