Message的使用
一 消息机制
1、为什么要使用Message机制主要是为了保证线程之间操作安全,同时不需要关心具体的消息接收者,使消息本身和线程剥离开,这样就可以方便的实现定时、异步等操作。
2、Message机制原理示意图:
Activity <---------------> EHandler<-----> Looper<-----> MessageQueue
IntentReceiver <-----> EHandler <-----> Looper<-----> MessageQueue
二 实现步骤
消息机制,实现这种机制需要只需要四步:
1、实例化Looper(因为实例化Handler时需要一个looper);
2、实例化Handler,这里需要覆盖handleMessage方法,处理收到的消息;
3、 实例化Message对象,调用已经实例化好的handler对象的obtainMessage方法,把数据传给obtainMessage方法,obtainMessage方法就会实例化一个Message对象。(这里也可以发送实现Runnable接口的对象);
4、调用Handler的sendMessage方法把实例化好的Message对象发送出去。
三 相关知识点
1、什么是Message
Message是封装了需要传递的数据交由Handler 处理的对象。
2、Message的作用:
用于存放传递的数据;是主线程和子线程传递数据的载体
3、如何使用Message:
3.1 初始化Message对象:
Message message= new Message();
Message message= Message.obtain();
Messager message= handler.obtaionMessager();
3.2 向Message中添加数据:
Message message = Message.obtain();
// 将传递数据,封装到Message消息对象中
message.what = 0;
message.arg1 = 1;
message.arg2 = 2;
message.obj = “传递的内容”;
Bundle bundle = new Bundle();
bundle.putString("name","张三");
message.setData(bundle);
3.3 获取Message中存储的数据
private Handler handler = new Handler()
{
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
int flag1 = msg.what;
int flag2 = msg.arg1;
int flag3 = msg.arg2;
String resultMsg = (String) msg.obj;
Bundle bundle = msg.getData();
String name = bundle.getString("name");
}
};
4 注意事项
Message的作用:
用于存放传递的数据;
是主线程和子线程传递数据的载体
Send 方式 -【注意事项】
子线程向主线程中发送空消息时,可以调用方法直接传入what值,并且放入到消息队列中;
Send方式发送消息,需要创建Message对象,封装传递的数据,将Message对象压入消息队列中;
Send方式发送消息后,需要在Handler的 handleMessage(Message)方法中,获取消息并处理;
Send方式定时发送消息和延迟发送消息, 时间的单位是毫秒。
Message的使用相关推荐
- 规范的 Commit Message
在 Angular 规范中,Commit Message 包含三个部分,分别是 Header.Body 和 Footer,格式如下: <type>[optional scope]: < ...
- Setting the Reply-To Header in an Email using CDONTS.NewMail Object and CDO Message
代码 1 <% 2 Option Explicit 3 4 Dim objMail 5 Dim strSubject 6 Dim strBody 7 8 strSubject ...
- EMQ学习笔记---Clean Session和Retained Message
MQTT会话(Clean Session) MQTT客户端向服务器发起CONNECT请求时,可以通过'Clean Session'标志设置会话. 'Clean Session'设置为0,表示创建一个持 ...
- Message、Handler、Message Queue、Looper之间的关系
2019独角兽企业重金招聘Python工程师标准>>> 在单线程模型下,为了解决线程通信问题,Android设计了一个通信机制.Message Queue(消息队列), 线程间的通信 ...
- CAS (10) —— JBoss EAP 6.4下部署CAS时出现错误exception.message=Error decoding flow execution的解决办法...
CAS (10) -- JBoss EAP 6.4下部署CAS时出现错误exception.message=Error decoding flow execution的解决办法 jboss版本: jb ...
- 使用alterMIME实现添加message footer功能
1. 安装alterMIME tar zxvf altermime-0.3.8.tar.gz cd altermin3-0.3.8 make make install alterm ...
- Selenium 爬虫时遇到的问题 Selenium message:session not created
出现问题如下: Selenium message:session not created: This version of ChromeDriver only supports Chrome vers ...
- Warning message:NAs introduced by coercion
Warning message:NAs introduced by coercion 目录 Warning message:NAs introduced by coercion 问题: 解决: 完整问 ...
- Warning message:In a + b : longer object length is not a multiple of shorter object length
Warning message:In a + b : longer object length is not a multiple of shorter object length 目录 Warnin ...
- R语言message函数、warning()函数和stop()函数输出程序运行健康状态信息实战
R语言message函数.warning()函数和stop()函数输出程序运行健康状态信息实战 目录 R语言message函数.warning()函数和stop()函数输出程序运行健康状态信息实战
最新文章
- 第二届中国云计算应用论坛圆满落幕
- 科学家提出了忆阻性神经混合芯片 这一概念
- HDU 4267 A Simple Problem with Integers
- 【机器学习基础】深入讨论机器学习 8 大回归模型的基本原理以及差异!
- 网际协议:数据报格式和分片以及IPv4编址
- mysql connetor_python mysqlconnetor
- erlang lists模块函数使用大全
- JAVA设计模式 - 建造者模式
- Python按照索引访问list
- 第2章:Maven的安装/2.1 Window下的安装
- OpenDRIVE地图图形化
- 演讲实录丨朱频频 让Bots无处不在
- linux常用c函数(中文版)
- 洛谷:P2172 [国家集训队]部落战争
- 阿里云官网网址URL链接后面的spm是什么参数?有什么作用?
- 搜索市场变局:少了云云,剩了搜狗
- 蓝牙智能门锁现状分析
- chp7三个修饰符test5 考点:静态方法 记录原因:对象类型的强转
- 获取不到input内自己输入的值
- 博文视点官方博客已经开通!