这块已经有很多大神写过了,不过自己一直也不太了解,记录下防止自己忘了.
AIDL主要用在进程间通讯,内部使用Binder机制传输
创建aidl接口
studio里面创建一个接口很简单,只要选择新建->aidl文件,就会自动生成一个范例文件,只要在这里面改改就好了.
aidl接口可以接受一般的基本类型还有他们的list,map,需要传输其他类的话需要在其中声明并实现Parcelable接口.
parcelable BeanParcelable;
----------------------------
import com.example.aidltest.BeanParcelable;
interface IMyAidlInterface {
void basicTypes(in BeanParcelable bean);
}
这里一定要记得加in out.运行之后,会自动生成一个同名的java文件.
这也能看出来是在binder的线程里运行的
in out 参数
- in只输入,无法返回数据
- out只返回,无法发送数据
- inout 两者皆可
out只传了个全为空的数组
生成的类
主要生成了Stub,Proxy两个类实现了传输的方法.
客户端调用Proxy,Sutb实现了onTransact方法,服务端继承Stub实现接口.