Handler机制浅析

作者: 忘尘And | 来源:发表于2017-09-13 11:40 被阅读0次

相关链接:
http://blog.csdn.net/itachi85/article/details/8035333
http://blog.csdn.net/gpwner/article/details/56667461
本文针对handler进行了一定的浅析,往给各位找工作的小伙伴一点帮助,实际开发应该都会用
andriod提供了Handler 和 Looper 来满足线程间的通信。Handler先进先出原则。Looper类用来管理特定线程内对象之间的消息交换(MessageExchange)。
1)Looper: 一个线程可以产生一个Looper对象,由它来管理此线程里的MessageQueue(消息队列)。
2)Handler: 你可以构造Handler对象来与Looper沟通,以便push新消息到MessageQueue里;或者接收Looper从Message Queue取出)所送来的消息。

  1. Message Queue(消息队列):用来存放线程放入的消息。
    4)线程:UIthread 通常就是main thread,而Android启动程序时会替它建立一个MessageQueue。

1.Handler创建消息
每一个消息都需要被指定的Handler处理,通过Handler创建消息便可以完成此功能。Android消息机制中引入了消息池。Handler创建消息时首先查询消息池中是否有消息存在,如果有直接从消息池中取得,如果没有则重新初始化一个消息实例。使用消息池的好处是:消息不被使用时,并不作为垃圾回收,而是放入消息池,可供下次Handler创建消息时使用。消息池提高了消息对象的复用,减少系统垃圾回收的次数。消息的创建流程如图所示。**

2.Handler发送消息
UI主线程初始化第一个Handler时会通过ThreadLocal创建一个Looper,该Looper与UI主线程一一对应。使用ThreadLocal的目的是保证每一个线程只创建唯一一个Looper。之后其他Handler初始化的时候直接获取第一个Handler创建的Looper。Looper初始化的时候会创建一个消息队列MessageQueue。至此,主线程、消息循环、消息队列之间的关系是1:1:1。
Handler、Looper、MessageQueue的初始化流程如图所示:


Hander持有对UI主线程消息队列MessageQueue和消息循环Looper的引用,子线程可以通过Handler将消息发送到UI线程的消息队列MessageQueue中。
3.Handler处理消息
UI主线程通过Looper循环查询消息队列UI_MQ,当发现有消息存在时会将消息从消息队列中取出。首先分析消息,通过消息的参数判断该消息对应的Handler,然后将消息分发到指定的Handler进行处理。
子线程通过Handler、Looper与UI主线程通信的流程如图所示。
Paste_Image.png

相关文章

  • Handler机制浅析

    本文我们主要是要介绍Handler机制,但是涉及到Handler又不得不介绍Message,MessageQueu...

  • Handler机制浅析

    前言 Android应用程序是基础Java语言,内部封装了消息队列,然后在主线程开启了死循环不断获取消息并处理来实...

  • Handler机制浅析

    相关链接:http://blog.csdn.net/itachi85/article/details/803533...

  • 浅析Handler机制原理

    Android的UI线程主要负责处理用户的按键事件、用户触屏事件以及屏幕绘图事件等,耗时操作放在后台进程进行。那么...

  • Android Handler机制原理浅析

    源码分析 1 Handler从创建对象到发送消息sendMessage()的过程做了什么 步骤: 步骤1 创建ha...

  • 浅析Android中Handler机制

    Handler机制是Android中相当经典的异步消息机制,在Android发展的历史长河中扮演着很重要的角色,无...

  • 浅析Handler消息传递机制

    Android的异步消息处理机制:Handler消息传递机制。 1、Message Message是在线程之间传递...

  • Android消息机制:Handler浅析

    Android的消息机制主要是指Handler的运行机制,Handler的运行需要底层的MessageQueue和...

  • 深入理解Handler机制之引路篇

    要想深入理解Handler机制,就要理解: Android为何要引入Handler机制? Handler机制究竟是...

  • Handler机制小结

    Handler笔记 什么是handler机制?handler机制的主要成员1、handler:负责发送处理消息2、...

网友评论

    本文标题:Handler机制浅析

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