AIDL中in,out和inout的区别

in:只能在客户端设置值,传入服务端,服务端获取客户端设置的值

out:用于在服务端设置值,服务端设置这个值后,客户端也可以得到这个由服务端设置的值,客户端如果有设置初始值,到了服务端会得不到这个值

inout:服务端可以得到客户端设置的值,客户端也可以得到服务端设置的值


基本数据类型参数只能是in类型


比如,服务端提供这3个方法:

void   getaList(out String[] list);
void   setaList(in String[] list);
void   gettList(inout String[] list);

@Override
public void getaList(String[] list) throws RemoteException {
   // TODO Auto-generated method stub
   list[0]="服务端赋值信息:"+info;
}

public void setaList(String[] list) throws RemoteException {
   // TODO Auto-generated method stub
   /**
    * 取得客户端传入的值
    */
   if(list.length>0)
      info=list[0];
}


客户端调用:

public void setaList()
{
   if(iBase!=null)
   {
      try {
         iBase.setaList(new String[]{"战国剑"});
         Toast.makeText(getApplicationContext(), "传值'战国剑'到服务端", Toast.LENGTH_SHORT).show();
      } catch (RemoteException e) {
         // TODO Auto-generated catch block
         e.printStackTrace();
      }
   }
}
再调用:

public void getaList()
{
   if(iBase!=null)
   {
      String[] list =new String[1];
      try {
         iBase.getaList(list);
         Toast.makeText(getApplicationContext(), "服务端返回内容:"+list[0], Toast.LENGTH_SHORT).show();
      } catch (RemoteException e) {
         // TODO Auto-generated catch block
         e.printStackTrace();
      }
   }
}

可以得到客户端设置的值


服务端改为:

@Override
public void getaList(String[] list) throws RemoteException {
   // TODO Auto-generated method stub
   String strOri = list[0];
   list[0]=strOri+"--服务端赋值信息:"+info;
}

客户端改为:

public void getaList()
{
   if(iBase!=null)
   {
      String[] list={"out也可以传入参数值吗"};
      try {
         iBase.getaList(list);
         Toast.makeText(getApplicationContext(), "服务端返回内容:"+list[0], Toast.LENGTH_SHORT).show();
      } catch (RemoteException e) {
         // TODO Auto-generated catch block
         e.printStackTrace();
      }
   }
}

打印出来的list[0]中,原始传入的值“out也可以传入参数值吗”变成了null,表示out标志不会接受传入的参数值

把getlist的参数改成inout类型,就可以接受到传入的参数值了











  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值