AIDL是 Android Interface definition language的缩写,一看就明白,它是一种android内部进程通信接口的描述语言,通过它我们可以定义进程间的通信接口。
通常我们在定义aidl文件里面的方法的时候,很少注意或者很少用到到参数的修饰符:in 、out 、inout,它们代表的是客户端和服务端数据相互传递的规则。注意,这里只是针对参数的规则,并不是方法返回值的规则。
如下介绍in/out/inout:
in代表参数只能从客户端传到服务端,服务端在执行这个方法的时候,会读取服务端传过来的参数,并以此参数执行方法。在服务端把方法执行完之后,并不会再做其他动作。
out代表此参数从客户端传递不到服务端,也就是在服务端执行方法的时候,并不会去读取客户端的这个参数,而是自己new一个新对象,用此新对象来作为参数执行方法。但是在方法执行完之后,会把这个参数又传回客户端,更新客户端的对象参数值。
inout则是相互之间都是可以传递和感知的。
为什么不会直接写 int erroCode , String msg ,in 和 out 是不是只有接口中才能用?
能具体点吗?