3

在 Android 中,Main Thread &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吗?

4

1 回答 1

2

如果你看一下源代码,你会发现 looper 内的线程不是 type HandlerThread

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

主线程可以作为HandlerThread访问吗

于 2014-12-04T12:14:17.077 回答