如何在主线程上调用getLooper()?

时间:2014-12-04 11:56:40

标签: java android android-handler android-looper

在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访问吗?

1 个答案:

答案 0 :(得分:2)

如果您查看源代码,您会看到looper中的线程不是HandlerThread类型的:

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

  

可以将主线程作为HandlerThread访问

没有