se io non uso una HandlerThread (passare il suo Looper a Handler), vuol dire che in questo caso Handler utilizzare MainThread (UI Thread) 's Looper?
Dai un'occhiata alla documentazione dei Handler
Handler()
predefinite costruttore associa questo gestore con il Looper per il thread corrente.
Se il thread corrente è MainThread, utilizza il looper MainThread (Thread UI).
Per associare in modo esplicito Handler al MainThread (Thread UI), scrivere sotto il codice.
Handler mHandler = new Handler(Looper.getMainLooper();
Se si scrive è come sotto, utilizza HandlerThread Looper.
HandlerThread handlerThread = new HandlerThread("HandlerThread");
handlerThread.start();
Handler requestHandler = new Handler(handlerThread.getLooper());
Se avete qualsiasi operazione di IO di rete in Runnable
compito, non è possibile utilizzare principale crochet thread. In tal caso, HandlerThread
è utile per inviare l'attività Runnable
eseguendo operazioni IO di rete.
Potete trovare esempio di codice @How do I fix android.os.NetworkOnMainThreadException?
Quale girone ottenere se Handler utilizza Looper di MainThread? Può causare mainThread bloccato?
Se si inviano molti eventi su MainThread Looper, verranno eseguiti su MainThread (UI Thread) stesso. Se le attività inviate richiedono più tempo per l'esecuzione, MainThread verrà bloccato.
Controlla qui sotto postale per interni di Looper:
What is the purpose of Looper and how to use it?
Questa è la documentazione ufficiale. 'Comoda classe per iniziare un nuovo thread che ha un looper. Il looper può quindi essere utilizzato per creare classi di gestori. Nota che start() deve ancora essere chiamato. 'Ho salvato il tuo tempo. – UnKnown