Android AIDL参数中in、out、inout、oneway含义及区别

1、定义

in、out、inout表示跨进程通信中数据的流向(基本数据类型默认是in,非基本数据类型可以使用其它数据流向out、inout)。

 in 表示数据只能由客户端流向服务端。(表现为服务端修改此参数,不会影响客户端的对象)

 out 表示数据只能由服务端流向客户端。(表现为服务端收到的参数是空对象,并且服务端修改对象后客户端会同步变动)

 inout 则表示数据可在服务端与客户端之间双向流通。(表现为服务端能接收到客户端传来的完整对象,并且服务端修改对象后客户端会同步变动)

oneway 关键字用于修改远程调用的行为,被oneway修饰了的方法不可以有返回值,也不可以有带out或inout的参数。

  • 本地调用(同步调用)
  • 远程调用(异步调用,即客户端不会被阻塞)
    • 使用oneway时,远程调用不会阻塞;它只是发送事务数据并立即返回。接口的实现最终接收此调用时,是以正常远程调用形式将其作为来自 Binder 线程池的常规调用进行接收。 

 

interface IBookTestInterface {
 
 
   List<Book> getBooks();
 
    //异步调用
    oneway void addBookIn(in Book book);
 
    //同步调用
    void addBookIn(in Book book);
 
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值