美文网首页
Handler消息机制

Handler消息机制

作者: 阿泽Leo | 来源:发表于2021-10-02 19:39 被阅读0次

    Handler消息机制主要涉及以下类:

    • Handler
    • Looper
    • MessageQueue
    • Message

    Handler必须创建在有Looper的线程中,Looper.prepare()即在该线程创建Looper。

    1. Handler发送消息到MessageQueue,调用MessageQueue的enqueueMessage(),将消息按时间顺序插入到链表中。
    2. Looper调用loop()开启无限循环,内部调用MessageQueue的next()取消息。内部调用nativePollOnce,作用是设置一个定时的睡眠。根据nextPollTimeoutMillis来判断睡眠:
    • nextPollTimeoutMillis = 0 :无需睡眠,直接返回。
    • nextPollTimeoutMillis > 0 :睡眠超过nextPollTimeoutMillis,就返回。
    • nextPollTimeoutMillis = -1 :一直睡眠,直到其他线程唤醒。
    1. 取出消息后,则根据msg.target对应的handler,调用dispatchMessage来处理消息。当Looper调用了quit或者quitSafely,会导致取出的消息为null,则退出looper循环。

    参考:
    https://www.jianshu.com/p/a7559af33986
    https://www.jianshu.com/p/13c8a66d3b5c

    相关文章

      网友评论

          本文标题:Handler消息机制

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