美文网首页
面试题:阐述Handler的实现原理

面试题:阐述Handler的实现原理

作者: S_ZY | 来源:发表于2019-02-26 15:34 被阅读1次

    处理过程

    从handler获取一个消息对象,把数据封装到这个消息对象中,通过handler的send...方法把消息push到MessageQueue队列中。
    Looper对象会轮询这个MeaaageQueue队列,把消息对象取出。
    通过dispatchMessage分发给Handler,在回调用Handler实现的handlerMessage方法处理消息。

    流程图
    流程图.png

    1、Handler本身:负责消息的发送和处理
    2、Message:消息对象
    3、MessageQueue:消息队列(用于存放消息对象的数据结构)
    4、Looper:消息队列的处理者(用于轮询消息队列的消息对象,取出后回调handler的dispatchMessage进行消息的分发,dispatchMessage方法会回调handleMessage方法把消息传入,由Handler的实现类来处理)

    Message对象的内部实现是链表,最大长度是50,用于缓存消息对象,达到重复利用消息对象的目的,以减少消息对象的创建,所以通常我们要使用obtainMessage方法来获取消息对象

    安全:Handler的消息处理机制是线程安全的

    关系:创建Handler时会创建Looper,Looper对象的创建又创建了MessageQueue

    相关文章

      网友评论

          本文标题:面试题:阐述Handler的实现原理

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