前言

  • Android开发的多线程应用场景中,Handler机制十分常用

  • 下面,将图文详解 Handler机制 的工作原理


目录


1. 定义

一套 Android 消息传递机制


2. 作用

在多线程的应用场景中,将工作线程中需更新UI的操作信息 传递到 UI主线程,从而实现 工作线程对UI的更新处理,最终实现异步消息的处理


3. 为什么要用 Handler消息传递机制

  • 答:多个线程并发更新UI的同时 保证线程安全
  • 具体描述如下

4. 相关概念

关于 Handler机制中的相关概念如下:

为跟源码联系起来,直接使用英文名分析,即 HandlerMessageMessage QueueLooper


5. 工作原理 解析

下面,定性地分析Handler机制的工作流程

5.1 工作流程解析

Handler机制的工作流程主要包括4个步骤:

  1. 异步通信准备
  2. 消息发送
  3. 消息循环
  4. 消息处理

具体如下图:

5.3 示意图

5.4 特别注意

线程(Thread)、循环器(Looper)、处理者(Handler)之间的对应关系如下:

  • 1个线程(Thread)只能绑定 1个循环器(Looper),但可以有多个处理者(Handler)
  • 1个循环器(Looper) 可绑定多个处理者(Handler)
  • 1个处理者(Handler) 只能绑定1个1个循环器(Looper)

至此,关于Handler的异步消息传递机制的工作原理分析完毕。


6. 总结

  • 本文对Handler机制的工作原理进行了全面讲解

Android开发:图文分析 Handler通信机制 的工作原理相关推荐

  1. Android系统中的Binder通信机制分析(7)- Java 层的 Binder 机制

    声明 其实对于Android系统Binder通信的机制早就有分析的想法,记得2019年6.7月份Mr.Deng离职期间约定一起对其进行研究的,但因为我个人问题没能实施这个计划,留下些许遗憾- 文中参考 ...

  2. android打地鼠设计报告,android开发中利用handler制作一个打地鼠小游戏

    android开发中利用handler制作一个打地鼠小游戏 发布时间:2020-11-25 15:21:11 来源:亿速云 阅读:136 作者:Leah 这期内容当中小编将会给大家带来有关androi ...

  3. Android开发之通过接口回调机制加载数据(源代码分享)

    Android开发之通过接口回调机制加载数据的简单实现,在实际开发中通过callback方法得到网络加载的数据的使用频率远比通过直接开启线程或异步任务加载数据的频率高的多,这篇文章的代码将简单实现该机 ...

  4. Android开发板串口(SerialPort)通信

    Android开发板串口(SerialPort)通信 Roy88关注 22017.09.07 18:01:22字数 1,618阅读 28,511 前言: 最近在总是看见有人在群里面问一些串口通信相关的 ...

  5. Springboot事件监听机制:工作原理

    目录 前言 1.观察者模式 1.1观察者模式的核心元素 1.2观察者模式的工作流程 2.springboot事件监听机制的基本工作原理 2.1事件发布器是什么时候在哪里产生的呢? 2.2事件监听器是什 ...

  6. php的工作原理,PHP的运行机制和工作原理的内容

    这篇文章给大家介绍的内容是关于PHP的运行机制和工作原理的内容,有着一定的参考价值,有需要的朋友可以参考一下. 一.PHP设计理念及特点 多进程模型:由于PHP是多进程模型,不同请求间互不干涉,这样保 ...

  7. 理解并取证:以太通道的动态协商机制的工作原理

    理解并取证:以太通道的动态协商机制的工作原理 取自博主<思科CCNP交换技术详解与实验指南>试读版 3.1理解以太通道的理论部分 3.1.1提出以太通道的原因.以太通道的作用和功能 3.1 ...

  8. 哨兵 (sentinal) 机制的工作原理

    哨兵 (sentinal) 机制的工作原理 什么是哨兵机制? Redis的哨兵(sentinel) 系统用于管理多个 Redis 服务器,该系统执行以下三个任务:        监控(Monitori ...

  9. Android开发笔记之:Handler Runnable与Thread的区别详解

    From:http://www.jb51.net/article/37465.htm 本篇文章是对在Android中Handler Runnable与Thread的区别进行了详细的分析介绍,需要的朋友 ...

最新文章

  1. 【OpenCV 4开发详解】图像距离变换
  2. [转]linux文件同步工具Unison的使用
  3. Windows 技巧篇-鼠标指针安装方法,漂亮的鼠标指针推荐
  4. 写文件 追加_总结Java中创建并写文件的5种方式
  5. 面向对象技术——UML
  6. 力扣删除排序数组中的重复项
  7. 计算机配置型号及主要技术指标,显卡性能看什么参数(新手必备的显卡性能知识全解)...
  8. Spring Boot 核心原理与源码解析 - 目录
  9. 图论——两道并查集例题
  10. Android版日语学习应用的逆向分析
  11. android 代码实现back键功能
  12. VS code 完全清除终端内容
  13. ssq冷热号:子图之间间隔调整
  14. 阿里云操作系统——飞天(Apsara)
  15. 一、SQL语句执行过程
  16. Qt 5.7 亮瞎眼的更新
  17. 如何利用laragon框架制作一个简单的应用?
  18. 用Python画向日葵
  19. python--第六章 python函数 装饰器 类 对象
  20. 征信报告内容组成和解读--报告头(2)

热门文章

  1. C++知识点29——使用C++标准库(迭代器适配器)
  2. 程序清单3.3_bases.c程序_《C Primer Plus》P37
  3. Redis笔记(一)Redis简介
  4. 搭建LAMP下的ucenter家园博客
  5. C#中数据类型转换-隐式转换
  6. GroovyQ | 关注Groovy社区动态,分享Groovy开发经验。
  7. CentOS 5.5 挂载windows ntfs 文件系统
  8. (原创)按照一定的格式生成一定数量的随机数的例子
  9. 在 ServiceModel 客户端配置部分中,找不到引用协定“WebServiceSoap”的默认终结点元素。这可能是因为未找到应用程序的配置文件,或者是因为客户端元素找不到与此协定匹配的终结点元素
  10. SpringCloud Eureka Client和Server侧配置及Eureka高可用配置