实现客户端添加Book,Service接收并打印出书籍信息
一、创建Book类
1.创建文件夹(本文命名为aidl)
2.创建Book类并继承Parcelable接口(原因:AIDL只能传送继承Parcelable接口的类)
详见:第二章——Parcelable接口的使用(跨进程,Intent传输)
二.创建AIDL文件夹与Book.aidl
用AIDL File填写名字的时候先随便填写(因为如果直接填Book为名字时候会报错,只有先创建完之后再RENAME才不会报错)
之后变成
为什么要有Book.aidl类,因为只有将类在aidl中声明时候,AIDL才能调用Book类,接下来为如何声明
所以说要让AIDL能够传送自定义类需要 ①继承Parcelable接口 ②创建同名.aidl文件声明自己。
三、创建IBookManager.aidl(作用:设置让客户端允许调用的接口)
四、分析Binder的运行原理
注:Stub对象可以理解为Binder类
1.系统会自动生成IBookManger.java文件在
分析其属性和方法
DESCRIPTOR:Binder的唯一表标识,"一般用类名表示"
asInterface(IBinder obj):将服务端的Binder对象转成客户端的所需的AIDL对象。
①:若客户端与服务端在同一进程则返回服务端的Stub本身。
②:若客户端与服务端在不同进程则返回的是Stub.proxy对象。
asBinder():返回当前的Binder对象
onTransact():当客户端发起跨进程请求时,会调用此方法,返回Stub.proxy
Proxy#getBookList():我们刚才创造的接口。
运行原理:
好了,运行原理和创建方式就到这里。
时间: 2024-10-29 19:05:35