Messenger解析(和Handler、IBinder、Message的关系)

本文深入探讨了Android中Messenger、Handler、Message及IBinder之间的关系,以实现跨进程服务通信。Messenger作为信使,负责传递由Handler处理的消息。通过IBinder对象,可以建立不同进程间的通信桥梁。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

为了更好的理解bound service利用Messenger来夸进程服务,这里先写一篇文章简单分析下Messenger、Handler、Message、Binder的关系。

先来看看Messenger官方的定义:
Reference to a Handler, which others can use to send messages to it.This allows for the implementation of message-based communication acrossprocesses, by creating a Messenger pointing to a Handler in one process,and handing that Messenger to another process.
Messenger关联一个可以发送消息的Handler。通过指定一个Handler对象创建一个Messenger可以实现基于消息的夸进程通信。

你可以把Messenger理解成一个送信人,他唯一的职责就是送信,即:send(Message msg),来看看send(Message msg)的实现:
发送消息的方法:

public void send(Message message) throws RemoteException {
        mTarget.send(message);
}
焦点关注到mTarget, 看看它是什么东西? send方法又是怎么回事? 和handler有关系?
其实Messenger的源码很简单,只有一个成员变量:mTarget(IMessenger的一个实例),核心就是它了,mTarget在构造方法中产生。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值