进程间通信使用Messenger

通过Messenger来完成进程间的通信,简单来说就是将自己创建的Messenger交给对方,对方就能通过这个Messenger来与你通信。

客户端和服务端互传Messenger的方法并不相同,下面分别解释。

 客户端想发信息给服务端,就得先得到服务端的Messenger:


客户端请求与服务端连接:bindService();

        服务端通过onBind()返回自己创建的Messenger底层的Binder;

  客户端得到Binder后,用一个Handler来还原出服务端的Messenger,这样就得到了服务端的Messenger;

客户端将数据包装成一个Message对象,通过Messenger .send(Message)就能完成客户端向服务端的单方向的信息传输;


服务端想回应客户端,为什么用回应这个词呢,因为服务端想向客户端传输信息,必须是先有客户端向服务端发信息:


在上面的最后一步中,客户端自己也创建一个Messenger,然后将这个Messenger传给Message的replyTo字段(本身这个字段就是一个Messenger对象的引用)

        然后服务端在得到客户端传来的message的同时也能获得客户端的Messenger;

然后同样的方式,服务端以Messenger.send(Message)的方法就能向客户端发送信息,然后就完成了服务端向客户端传输信息的过程;

你可能感兴趣的:(进程间通信使用Messenger)