Android IPC

  1. 跨进程调用service, 
    • AIDL定义进程之间的通信接口,AIDL文件语法和定义几个java接口语法类似,只不过扩展名是.aidl
    • IDE会自动为接口提供实现,在接口中会定义一个名为Stub的内部static类,实现定义的接口,继承Binder类,Binder实现了IBinder接口
  2. AIDL service返回给client端的是IBinder对象的代理,在client端也要引用AIDL接口文件,也会生成接口的响应实现

  3. aidl.exe工具为AIDL文件生成的代码主要完成下面的功能:
    • 定义一个Java interface,内部包含aidl文件所声明的服务函数,并已提供一个asBinder()函数
    • 定义一个proxy类,该类作为客户端程序访问服务端的代理,代理主要是为了解决数据序列化到Parcel对象的顺序问题
    • 定义一个继承自Binder类的Stub类,主要由服务端来使用

 

你可能感兴趣的:(android)