在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
访问吗?
答案 0 :(得分:2)
如果您查看源代码,您会看到looper中的线程不是HandlerThread
类型的:
60 final Thread mThread;
...
188 mThread = Thread.currentThread();
可以将主线程作为HandlerThread访问
没有