ActivityThread绑定looper思考

来源:互联网 发布:禁用独立显卡 linux 编辑:程序博客网 时间:2024/06/08 06:48
一、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循环,

五、资料查阅视图跟踪

















  

0 0
原创粉丝点击