前言
在
Android
开发的多线程应用场景中,Handler
机制十分常用下面,将图文详解
Handler
机制 的工作原理
目录
![](http://upload-images.jianshu.io/upload_images/944365-fe2226fd91ced005.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1000/format/webp)
1. 定义
一套 Android
消息传递机制
2. 作用
在多线程的应用场景中,将工作线程中需更新UI
的操作信息 传递到 UI
主线程,从而实现 工作线程对UI
的更新处理,最终实现异步消息的处理
![](http://upload-images.jianshu.io/upload_images/944365-4a64038632c4c88f.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/656/format/webp)
3. 为什么要用 Handler
消息传递机制
- 答:多个线程并发更新UI的同时 保证线程安全
- 具体描述如下
![](http://upload-images.jianshu.io/upload_images/944365-7479b4a8b8fe48bf.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1000/format/webp)
4. 相关概念
关于 Handler
机制中的相关概念如下:
为跟源码联系起来,直接使用英文名分析,即
Handler
、Message
、Message Queue
、Looper
![](http://upload-images.jianshu.io/upload_images/944365-d08903087cb575d9.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1000/format/webp)
5. 工作原理 解析
下面,定性地分析Handler
机制的工作流程
5.1 工作流程解析
Handler
机制的工作流程主要包括4个步骤:
- 异步通信准备
- 消息发送
- 消息循环
- 消息处理
具体如下图:
![](http://upload-images.jianshu.io/upload_images/944365-dd241bf32c12df43.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1000/format/webp)
5.3 示意图
![](http://upload-images.jianshu.io/upload_images/944365-c86c852fa0a64d5b.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1000/format/webp)
5.4 特别注意
线程(Thread)
、循环器(Looper)
、处理者(Handler)
之间的对应关系如下:
- 1个线程
(Thread)
只能绑定 1个循环器(Looper)
,但可以有多个处理者(Handler)
- 1个循环器
(Looper)
可绑定多个处理者(Handler)
- 1个处理者
(Handler)
只能绑定1个1个循环器(Looper)
![](http://upload-images.jianshu.io/upload_images/944365-61b387c0e66ed8ee.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/480/format/webp)
至此,关于Handler
的异步消息传递机制的工作原理分析完毕。
6. 总结
Handler
机制的工作原理进行了全面讲解