Handler、MessageQueue、Looper 三基友关系图解

Handler、MessageQueue、Looper 三基友关系图解_第1张图片

   

        一个线程只能设置一个Looper 不然程序就会抛出异常。除了主线程(UI线程)外 ,其他线程里想要使用handler需要 Looper.prepare(); 创建Looper 然后在Handler 下面 调用Looper.loop(); 让 压缩机 跑进来,为啥主线程不用这样呢?因为主线程自己初始化了,表面上你看不到而已。

        

        更具实践证明 你可以new 很多Handler 以及发送消息、处理。说明 Looper 可以对应 很多个 Handler 。创建Looper对象的时候会去创建一个messageQueue,说明 Looper 对象只会对应一个 MessageQueue ,而一个线程也只有一个Looper ,即一个线程只有 一个 MessageQueue。



你可能感兴趣的:(Handler、MessageQueue、Looper 三基友关系图解)