Binder通信之AIDL的原理
一、前言
上一节写了AIDL的示例,实现了两个应用见的通信,这一节来具体看看AIDL是如何实现的?AIDL的原理是什么?
二、为什么要用AIDL?
既然有了Binder,我们还要有AIDL呢?
上一节的AIDL示例中,我们编译后,在build/generated/aidl_source_output_dir/debug/out下会生成IMyAidlService.java文件,打开查看你会发现跟framework中Binder写的非常类似,AIDL简化了Binder的代码逻辑,把跟service交互的逻辑通过工具编译来生成。
三、AIDL通信流程
Client 端和Server端使用同一个AIDL,连包名都需要保持一致。
Server端继承自Service,重载一个onBind(),返回服务实体Stub(),mStub其实就是一个IBinder
IMyService.Stub mStub = new IMyService.Stub