- 什么场景有必要用
AIDL
来进行IPC通信?- 不同应用的客户端通过IPC方式访问服务,并且希望在服务中进行多线程处理时。
- 什么情况下适合用``
- 如果是进程内部,我们就不需要跨进程了
- 如果iin不是代理对象我们创建一个代理对象
通过绑定服务来实现功能的步骤
- 客户端通过
bindService
方法来绑定一个服务对象,如果绑定成功,会回调 用ServiceConnection 的接口方法 onServiceConnected - 通过Service组件来暴露业务接口
- 服务端通过创建一个
*.aidl
文件来定义一个可以被客户端调用的业务接口
一个
AIDL
文件:
- 不能有修饰符,类似接口的写法
- 支持类型有:8种基本数据类型:String,Char,CharSequence,List
,map,自定义类型
- 服务端需要体统一个业务接口的实现类,通常我们会extends Stub类
- 通过 Service 的 onBind 方法返回被绑定的业务对象
- 客户端如果绑定成功,就可以像调用自己的方法一样调用远程的业务对象方法