您的位置:首页 > 大数据 > 人工智能

AIDL中的in、out、inout是什么?

2017-07-18 10:05 267 查看
之前写AIDL的时候就关注功能实现了,所有的形参的数据流都是默认的in。如下:

ackage com.example.aidlserver;
import com.example.aidlserver.Person;
// Declare any non-default types here with import statements

interface IMyAidlInterface {
List<Person> getPerson();
void addPerson(in Person person);
}


后来看了博客,才真正知道这3个数据流向的作用:

AIDL中的定向 tag 表示了在跨进程通信中数据的流向,其中 in 表示数据只能由客户端流向服务端, out 表示数据只能由服务端流向客户端,而 inout 则表示数据可在服务端与客户端之间双向流通。其中,数据流向是针对在客户端中的那个传入方法的对象而言的。in 为定向 tag 的话表现为服务端将会接收到客户端传来的对象的完整数据,但是客户端传入的那个对象不会因为服务端对传参的修改而发生变动;out 的话表现为服务端将会接收到那个对象的参数为空的对象,但是在服务端对接收到的空对象有任何修改之后客户端将会同步变动;inout 为定向 tag 的情况下,服务端将会接收到客户端传来对象的完整信息,并且客户端将会同步服务端对该对象的任何变动。

参考博文:http://blog.csdn.net/luoyanglizi/article/details/51958091
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  aidl in out inout 理解