1. Handler消息机制基础解析
在Android开发中,Handler消息机制是线程间通信的核心组件。这套机制主要涉及四个关键对象:Handler、Message、MessageQueue和Looper。理解这些组件的关系是掌握sendMessage和sendToTarget区别的前提。
每个线程通过Looper维护一个消息队列(MessageQueue),Handler作为发送和处理消息的入口点。当我们需要跨线程传递数据或执行任务时,典型的做法是构造Message对象并通过Handler发送。这里就出现了两种看似相同但存在微妙差异的实现方式。
关键提示:Message对象并非每次new创建,而是优先从全局消息池中复用,这是Android性能优化的重要设计。
2. sendMessage标准用法详解
2.1 典型使用场景
标准sendMessage流程包含三个明确步骤:
- 获取Message实例(推荐使用obtain())
- 设置消息内容(what/arg1/arg2/obj等字段)
- 通过目标Handler发送消息
// 标准sendMessage示例
Message msg = Message.obtain();
msg.what = MSG_UPDATE_UI;
msg.obj = "数据载荷";
targetHandler.sendMessage(msg);
2.2 底层实现原理
当调用handler.sendMessage(msg)时:
- 消息会被标记目标Handler(msg.target = this)
- 将消息加入MessageQueue队列
- Looper轮询取出消息后,回调目标Handler的handleMessage()


545

被折叠的 条评论
为什么被折叠?



