finden, wenn ich (mit seinem Looper zu Handler) keine HandlerThread verwenden, dass in diesem Fall Handler bedeutet verwenden Mainthread (UI Thread) ‚s Looper?
Hier finden Sie aktuelle Dokumentation von Handler
Handler()
Standardkonstruktors verbindet diesen Handler mit dem Looper für den aktuellen Thread.
Wenn Ihr aktueller Thread MainThread ist, verwendet er MainThread (UI Thread) Looper.
Um Handler explizit mit Ihrem MainThread (UI-Thread) zu verknüpfen, schreiben Sie den folgenden Code.
Handler mHandler = new Handler(Looper.getMainLooper();
Wenn Sie schreiben, wie unten ist, verwendet es HandlerThread Looper.
HandlerThread handlerThread = new HandlerThread("HandlerThread");
handlerThread.start();
Handler requestHandler = new Handler(handlerThread.getLooper());
Wenn Sie Netzwerk-IO haben in Runnable
Aufgabe, können Sie nicht Haupt-Thread Looper verwenden. In diesem Fall ist HandlerThread
nützlich, um die Aufgabe Runnable
zu verschicken, die den Netzwerk-IO-Betrieb durchführt.
Sie können Beispielcode @How do I fix android.os.NetworkOnMainThreadException?
Wie weit kommt, wenn Handler verwendet Mainthread Loopers finden? Kann mainThread blockiert werden?
Wenn Sie viele Ereignisse an MainThread Looper senden, werden sie auf MainThread (UI-Thread) selbst ausgeführt. Wenn die übermittelten Aufgaben mehr Zeit für die Ausführung benötigen, wird MainThread blockiert.
prüfen unten Beitrag für Interna von Looper:
What is the purpose of Looper and how to use it?
Dies ist die offizielle Dokumentation. 'Handliche Klasse zum Starten eines neuen Threads mit einem Looper. Der Looper kann dann zum Erstellen von Handler-Klassen verwendet werden. Beachten Sie, dass start() immer noch aufgerufen werden muss. 'Ich habe deine Zeit gespart. – UnKnown