引言:
Android系统的进程间通信,主要是Binder,AIDL就是一种Android接口定义语言,主要就是为了能更简单方便地实现跨进程通信。
概念与理解:
AIDL:Android Interface Definition Language
序列化:一个对象可以表示为一个字节序列,该字节序列中包含对象类型,对象的数据及其数据类型。
反序列化:通过反序列化,可以根据字节序列内的内容重新在内存中新建这个对象。
主要的应用场景:
1)永久的保存对象,保存对象的字节序列到本地文件中。
2)通过序列化对象在网络中传递数据
3)通过序列化对象在进程间传递数据
Serializable接口:Serializable来实现序列化相当简单,只需要在类的声明中添加指定的serialVersionUID即可。对象的序列化和反序列化的工作都是系统自动完成了
pacelable接口:Android特有的一个实现序列化的方式。只要实现这个接口,这个类的对象就可以实现序列化并可以通过Intent和Binder传递。在序列化过程中需要实现的功能包括:
1)序列化,WriteToPacel;
2)反序列化,ReadFromParcel;
3)内容描述,describeContents;
https://blog.csdn.net/hust_edu_csdn_123/article/details/100015327
AIDL 规定了数据流方向
in
其中 in 表示数据只能由客户端流向服务端,表现为服务端将会接收到一个那个对象的完整数据,但是客户端的那个对象不会因为服务端对传参的修改而发生变动;
out
out 表示数据只能由服务端流向客户端,表现为服务端将会接收到那个对象的的空对象,但是在服务端对接收到的空对象有任何修改之后客户端将会同步变动。
inout
inout 则表示数据可在服务端与客户端之间双向流通,nout 为定向 tag 的情况下,服务端将会接收到客户端传来对象的完整信息,并且客户端将会同步服务端对该对象的任何变动
AIDL用法详解_aidl使用_sunnyPP123的博客-CSDN博客