ActivityThread绑定looper思考

本文探讨了在Android中ActivityThread如何绑定到Looper,并分析了主线程为何不能直接quit Looper的原因,揭示了Android系统对主线程运行的保护机制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、ActivityThread绑定looper
       在ActivityThread中Looper.prepareMainLooper();将主线程初始化为一个Looper主线程。这时候我们的主线程就成了一个就是循环
       工作的主线程。
二、作用与意义:
      在程序开发中,我们经常会需要一个线程不断循环,一旦有新任务则执行,执行完就继续等待下一个任务,这就是我们looper线程作
      用。
三、根据查阅源码得出个人小结:
       Looper中有个prepare(boolean b)的方法,传参true表示初始化一个可以被可以调用Looper.quit()在quit()里面传一个参数true,
      调用MessageQueue消息队列类中通过对象调用quit(boolean safe)方法,执行removeAllFutureMessagesLocked();方法和
       nativeWake(mPtr);结束looper死循环。
       相反,Activity的主线程初始化looper时调prepare(boolean b)传了一个false进去,根据以上逻辑是,不能结束looper死循环的,如

       果尝试结束,他会抛一个异常"Main thread not allowed to quit." 即主线程无法退出quit循环,

五、资料查阅视图跟踪

















  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值