android-异步消息处理机制初步
2024-09-28 07:40:21
Android的异步消息处理主要由4个部分组成,Message、Handler、MessageQueue和Looper
Message:在线程之间传递的消息,它可以在内部携带少量的信息,用于在不同线程之间交换数据。可以使用arg1和arg2字段来携带一些整形数据,shiyongobj携带一个Object对象
Handler:处理者,主要用于发送和处理消息的。sendMessage()方法用来发送信息,经过一系列辗转处理后,会传递到handleMessage()方法中。
MessageQueue:消息队列,主要用于存放所有通过Handler发送的消息,这部分消息会一直存在于消息队列中,等待被处理。每个线程只会有一个MessageQueue对象。
Looper:每个线程中的MessageQueue的管家,调用Looper的loop()方法后,就会进入一个无限的循环中,只要MessageQueue中存在一条消息,就会取出并传递到Handler的hanleMessage()方法中。每个线程也只会有一个Looper对象。
异步消息处理机制的流程(以改变UI为例):
在主线程中创建一个Handler对象,并按需求重写handlerMessage()方法。当子线程进行UI操作时,会创建一个Message对象,通过Handler的对象将这条消息(Message)发送出去,加入到MessageQueue中等待被处理,Looper则会一直尝试从MessageQueue中取出此Message,最后分发回Handler的handleMessage()方法中。
最新文章
- #region Json转DataTable
- android 发送GET请求 服务端接收乱码的问题
- CDH中flume是已经启动着了…
- Spring使用RowMapper将数据中的每一行封装成用户定义的类
- 关于 python 的 @property总结和思考
- 利用putty软件连接虚拟机中linux操作系统
- jsp中pageEncoding、charset=UTF -8
- (ssh整合web导出excel)在ssh框架中使用poi正确导出具有比较高级固定格式的excel 整体过程,查询导出前后台下载
- Java反射及依赖注入简单模拟
- hdu 4912 Paths on the tree(树链拆分+贪婪)
- SpriteBuilder修改CCB文件中的子CCB文件需要注意的一个地方
- web.xml 详细介绍
- BSScrollViewEdgePop
- windows----------telnet不是内部命令问题
- POJ - 3244-Difference between Triplets
- jackson中@JsonProperty、@JsonIgnore等常用注解总结
- 与spring整合就是为了不用自己创建bean 让spring帮助我们创建bean
- for 练习
- C# Winform 未能加载文件或程序集";System.Data.SQLite";或它的某一个依赖项。试图加载格式不正确的程序
- Linux CentOS 7.x/6.x/5.x 导入epel源
热门文章
- (九)MySQL用户和权限管理
- (2)SpringBoot 配置
- 5、Flask实战第5天:页面跳转和重定向
- oracle null 相关的另外2个方法
- 【Floyd】【Dilworth定理】【最小路径覆盖】【匈牙利算法】bzoj1143 [CTSC2008]祭祀river
- 【分块】bzoj3226 [Sdoi2008]校门外的区间
- 【二维单调队列】BZOJ1047-[HAOI2007]理想的正方形
- [CF468D]Tree
- 反序显示一个整数 Exercise06_04
- 【转载】Mini6410启动过程