标签:AIDL,对象,server,client,进程,序列化,数据,inout,out From: https://www.cnblogs.com/jiayonghua/p/17862363.htmlAndroid两个进程间的内存相互独立不能互相访问,跨进程传输非默认类型对象需要先序列化,序列化的目的是将对象数据以能够在内存中流通的形式从
一个进程传递到另一个进程,两个进程对象的传递类似深度clone,client端就对象数据写入Parcel(writeToParcel)server端从Parcel(readFromParcel)读取对象数据并
重新创建一个同样的对象将读取的数据填充到此对象,但这两个对象并不是一样的,只是他们的数据完全一样。
两个进程中要传递的对象必须实现Parcelable接口,AIDL中序列化的对象传递还必须指定定向tag,tag表示数据的流通方向。
in:由client端流向server端,server端可以收到此对象的所有数据,收到之后会重新创建一个新的对象将数据填充进去,因为client端和server端是两个不同的对象,
所以server端对数据的修改不会影响到client端的对象
out: 有server端流向client端,client端将对象传递给server端后,server端相当于收到了一个空对象,没有client端此对象的任何数据,但是server端对此空对象的操作会影响到client端
inout:对象可以双向流动。即server端能收到client发过来的对象的数据,server端对此对象的操作也能影响到client对象