美文网首页
我对Handler机制的理解

我对Handler机制的理解

作者: 地球是猿的 | 来源:发表于2017-04-05 23:38 被阅读5次

    一、了解Handler之前,要先知道下面的几个概念

    1. Message:线程间通讯的数据单元。线程间通讯,发送的就是message,这里面存储了你要发送的消息内容。
    2. MessageQueue:消息队列,用来存放通过Handler发布的消息,按照先进先出执行。
    3. Handler:Message的主要处理者,负责将Message添加到消息队列以及对消息队列中的Message进行处理。
    4. Looper:循环器,扮演Message Queue和Handler之间桥梁的角色,循环取出Message Queue里面的Message,并交付给相应的Handler进行处理。
    5. 线程和这几个概念之间的关系:
      ①UI线程初始化Handler的时候,会创建一个Looper,这个Looper和UI线程对应;
      ②Looper初始化的时候会创建一个消息队列MessageQueue。
      也就是说主线程、Looper、MessageQueue这三者是一一对应的,而且都是唯一的。一个APP,有一个主线程,这个主线程有一个Looper,这个Looper有一个对应的MessageQueue。但是这个主线程中可以有多个Handler对象。

    二、来看一下Handler通信的过程,也就是原理

    原理:Handler创建一个Message消息→通过获取的主线程Looper将Message加入到MessageQueue中去→Looper循环查询MessageQueue是否有新消息,如果没有就阻塞,如果有就传递给创建消息的Handler来处理。

    总结一下:Handler负责发送和处理消息;Looper负责接收Handler发送的消息,并把消息回传给Handler自己;MessageQueue就是一个消息容器。

    相关文章

      网友评论

          本文标题:我对Handler机制的理解

          本文链接:https://www.haomeiwen.com/subject/hpqfattx.html