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类型,就可以接受到传入的参数值了