【多进程通信】AIDL、Messenger、广播

  1. AIDL
  2. Binder
  3. Messenger
  4. HermersEventBus

进程通信(binder/AIDL/Messenger)Binder机制最重要

Android几种进程

可以看到,AIDL的核心原理其实就是我们定义的AIDL文件会编译时生成一个Java接口文件,这个文件包含了客户端、服务端的所有操作。

Android系统中的进程之间不能共享内存,因此,需要提供一些机制在不同进程之间进行数据通信。为了使其他的应用程序也可以访问本应用程序提供的服务,Android系统采用了远程过程调用(Remote Procedure Call,RPC)方式来实现。与很多其他的基于RPC的解决方案一样,Android使用一种接口定义语言(Interface Definition Language,IDL)来公开服务的接口。

它引用了一个Handler对象,以便others能够向它发送消息(使用mMessenger.send(Message msg)方法)。该类允许跨进程间基于Message的通信(即两个进程间可以通过Message进行通信),在服务端使用Handler创建一个Messenger,客户端持有这个Messenger就可以与服务端通信了。
以前我们使用Handler+Message的方式进行通信,都是在同一个进程中,从线程持有一个主线程的Handler对象,并向主线程发送消息。
而Android既然可以使用binder机制进行跨进程通信,所以我们当然可以将Handler与binder结合起来进行跨进程发送消息。

  • 广播
    避免使用隐式intent广播传递敏感信息,信息可能被其他注册了对应broadcastReceiver的App接收。
    如果广播仅限于应用内,则可以使用LocalBoradcastManager#sendBroadcast实现,避免敏感信息外泄和Intent拦截风险,安全性更好,运行效率更高。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android跨进程通信IPC整体内容如下 1、Android跨进程通信IPC之1——Linux基础2、Andro...
    隔壁老李头阅读 3,722评论 3 12
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,955评论 25 709
  • 一、IPC简介 (1)IPC是Inter-Process Communication的缩写,含义为进程间通信或者跨...
    遥遥的远方阅读 7,263评论 0 3
  • 生命里的二三事 小南和小北是同学带过来的,刚开始看见他俩的照片时,我对他俩的好奇交错着他俩对新环境的好奇,...
    张壹阅读 369评论 0 0
  • 又是一季石榴花开的时候,新鲜的校园里多了我们,少了一批老生。7月时节,我们大一毕业,自西校区搬入主校区。而今,这里...
    杨河阅读 294评论 1 1