Android使用Messenger进行跨进程双向通信

参考文章:https://blog.csdn.net/zhaoshiqing7/article/details/8036663

假设位于不同进程的某Activity要和某Service进行跨进程通信,步骤如下:

1、在Service和Activity中各new一个Messeger对象。

Service的信使


Client的信使

2、在Activity中在某处方法中,调用bindService方法将Activity和Service进行绑定。

注意此处的Connection对象

3、Service在接到绑定通知时,在回调中获取Service信使的Binder对象,并通过mConnection连接返回给客户端,客户端获取到onServiceConnected回调方法中的IBinder对象service,并通过该参数实例化“还原”出来服务端的Service信使,然后就可以使用它对服务端进行发消息。

Android使用Messenger进行跨进程双向通信_第1张图片
客户端向服务端发送“你好!”

4、如果服务端在收到消息后想要回信,那么就如上图所示,将客户端的Messenger信使赋予Message中的参数replyTo。我们在服务端收到消息后的回调中可以获取到它。

Android使用Messenger进行跨进程双向通信_第2张图片
服务端收到消息,并获取到客户端的信使

5、如上述代码,服务端获取到客户端的信使并用它回信,客户端也会在信使持有的Handler引用中收到消息。

Android使用Messenger进行跨进程双向通信_第3张图片
客户端收到服务端回信

你可能感兴趣的:(Android使用Messenger进行跨进程双向通信)