安卓考点脉络

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

2018-02-24  本文已影响37人  小呀么小黄鸡
  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结合起来进行跨进程发送消息。

上一篇下一篇

猜你喜欢

热点阅读