像是HandlerThread这种新创建的一个线程,内部的Looper对象也是当前线程独有的还是共用主线程的?

来源:7-4 如何自己实现一个简单的 Handler - Looper 框架?

weixin_慕妹9102749

2020-09-08

HandlerThread中的Looper对象是通过Looper.prepare() 创建的,而该方法内部是调用了 sThreadLocal.set(new Looper(quitAllowed)); 可以理解成是在当前的线程里创建了一个新的Looper对象,然后加入到当前的ThreadLocal中,但是在有的文章上看到说是共用的主线程的Looper,所以有点疑问。

如果每个线程都可以创建Looper,那也就是说Android应用中可能会有多个事件循环了,是这样吗?

写回答

1回答

bennyhuo

2020-09-09

是独立的。主线程的 Looper 运行在主线程上,不会与其他新创建的 HandlerThread 共用。

1
1
weixin_慕妹9102749
非常感谢!
2020-09-12
共1条回复

大厂资深面试官 带你破解Android高级面试

改变视野和思维 深度与广度兼备的 Android 进阶面试指导课程

1636 学习 · 222 问题

查看课程