为了更好的理解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在构造方法中产生。