在Android中,默认情况下,主线程和HandlerThread具有Looper和MessageQueue。我可以在handlerThread对象上调用getLooper(),但是为什么不在主线程上调用?

HandlerThread ht = new HandlerThread();
Looper htLooper = ht.getLooper();      // Works fine

Thread mainThread = Looper.getMainLooper().getThread();
Looper mainLooper = mainThread.getLooper();    // getLooper() doesn't compile.

在实际情况下,永远不需要在mainThread上使用getLooper()。我们可以只调用Looper.getMainLooper()。我只想知道为什么它不起作用。

我从Java的角度理解它,Looper.getMainLooper().getThread()返回一个java.lang.Thread,并且Thread类没有getLooper()方法。但是Android的主线程可以。主线程可以作为HandlerThread访问吗?

最佳答案

如果看一下源代码,您会发现弯针内部的线程不是HandlerThread类型:

60       final Thread mThread;
...
188      mThread = Thread.currentThread();


可以作为HandlerThread访问主线程

没有

07-26 05:01