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信使,然后就可以使用它对服务端进行发消息。

客户端向服务端发送“你好!”

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

服务端收到消息,并获取到客户端的信使

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

客户端收到服务端回信
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,726评论 25 709
  • 【Android Service】 Service 简介(★★★) 很多情况下,一些与用户很少需要产生交互的应用程...
    Rtia阅读 3,175评论 1 21
  • 2.1 Activity 2.1.1 Activity的生命周期全面分析 典型情况下的生命周期:在用户参与的情况下...
    AndroidMaster阅读 3,110评论 0 8
  • 亲爱的孩子: 转瞬你就快12岁小学毕业了,时间流逝得真是太快了一些。在内心的某个部分,我们还固执地停留在陪伴你的那...
    安吉莉娜创意对话阅读 1,773评论 14 25
  • 打开自己所有交的作业,数量并不多,只有12篇(自从加入007之后,自己每次都交了作业的)。再看看题目,呵呵...
    风痕3388阅读 306评论 4 4