AIDL中in,out和inout的区别
2016-06-02 15:24
573 查看
in:只能在客户端设置值,传入服务端,服务端获取客户端设置的值
out:用于在服务端设置值,服务端设置这个值后,客户端也可以得到这个由服务端设置的值,客户端如果有设置初始值,到了服务端会得不到这个值
inout:服务端可以得到客户端设置的值,客户端也可以得到服务端设置的值
基本数据类型参数只能是in类型
比如,服务端提供这3个方法:
客户端调用:
再调用:
可以得到客户端设置的值
服务端改为:
客户端改为:
打印出来的list[0]中,原始传入的值“out也可以传入参数值吗”变成了null,表示out标志不会接受传入的参数值
把getlist的参数改成inout类型,就可以接受到传入的参数值了
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类型,就可以接受到传入的参数值了
相关文章推荐
- git clone: error: RPC failed; result=56, HTTP code = 200
- linux 进程调用 execl() fork() waitpid()
- 敌人AI:行走
- HDOJ/HDU 1982 Kaitou Kid - The Phantom Thief (1)(字符串处理)
- HDOJ/HDU 1982 Kaitou Kid - The Phantom Thief (1)(字符串处理)
- 排序(三)之直接插入排序Straight Insertion Sort
- 14.1.2 Checking InnoDB Availability 检查InnoDB 可用性:
- 14.1.2 Checking InnoDB Availability 检查InnoDB 可用性:
- 14.1.2 Checking InnoDB Availability 检查InnoDB 可用性:
- windows 7 64位 JMail注册
- USACO 2009 Feb Gold 1.Fair Shuttle 贪心
- Inpaint 2.4简体中文版 任何人都会…
- [leetcode] 70. Climbing Stairs
- CLOSE_WAIT状态的生成原因
- CS231n 2016 通关 第五章 Training NN Part1
- 553 relay check local fail. (本域用户必须通过验证) ----一个老项目发邮件问题
- leecode_220 Contains Duplicate III
- 并发注意事项(2)并发工具优先于wait和notify
- 03-树3 Tree Traversals Again
- Failed to connect to repository database. OMS will be automatically restarted once it identifies tha