美文网首页Android相关
Handler基础理论知识

Handler基础理论知识

作者: 靠睡大觉创新高 | 来源:发表于2021-02-26 16:46 被阅读0次

简介

在Android开发中,我们经常需要在工作线程中进行夸线程通讯实现UI操作,这时就会使用到Handler。

Handler、Looper、MessageQueue、Message关系介绍

  • Handler
    Handler是跨线程通讯的媒介。可以通过Handler实现Message发送与消费Meesage等操作。
  • Looper
    Looper是个无限循环的滚轮,不断地从MessageQueue中取出Message,并派发给Handler。
  • MessageQueue
    MessageQueue是消息队列,主要用于消息入队与出队操作
  • Message
    Message是消息主体,携带消息内容。

工作流程

  1. 在主UI线程启动的时候,系统就创建了UI线程Looper对象。Looper内包含了MessageQueue,在创建Looper时就会创建MessageQueue。
  2. 创建Handler时会获取当前线程的Looper对象,Handler可以发送Message到MessageQueue
  3. Looper不断的从MessageQueue中取出Message并派发给对应的Handler,Handler收到消息并执行对应的业务代码逻辑,这就完成了消息的消费

特性

  • Looper具有唯一性
    ThreadLocal是用于保存线程信息的一个类,在Looper创建的时候会从ThreadLocal获取线程的Looper,如果不为空就会抛出异常,这样就保证了Looper的唯一性。
    Looper.png

Q&A

  1. Handler中发送消息线程安全吗?
    线程安全。
  2. 为什么消息循环不会卡死
    .....
  3. obtainMessage与new Message的区别:
    obtainMessage()会从消息池中获取到Message,重复new Message效率低。

相关文章

网友评论

    本文标题:Handler基础理论知识

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