我正在编写一个无线电流媒体应用程序。我通过使用AIDL接口技术与服务进行通信,将“无线电播放”作为远程服务运行。但我真的不明白一件事。
AIDL接口参数值中的“out”是什么?
像这样:
String doSomething(in String a, out String[] b);
我理解“在”中,即从活动调用方法时将数据发送到远程。
什么是“out”,为什么我们需要在同一方法中“in”和“out”?在哪种情况下使用它们(“out / inout”)?为什么String[]
“出局”?
请帮忙..
在AIDL中,out
标记指定仅输出参数。换句话说,它是一个参数,不包含有关输入的有趣数据,但在方法期间将填充数据。
例如,可以像这样指定复制字节数组的方法:
void copyArray(in byte[] source, out byte[] dest);
inout
标记表示该参数对输入和输出都有意义。例如:
void charsToUpper(inout char[] chars);
这很重要,因为每个参数的内容必须是marshalled(序列化,传输,接收和反序列化)。输入/输出标签允许Binder跳过编组步骤以获得更好的性能。
在这里,
示例:请检查以下AIDL界面以更好地理解它。
package com.hardian.sample.aidl;
import com.hardian.sample.aidl.TeamMember;
interface ITeamManageService {
void getTeamCaptian(out TeamMember member);
void updateTeamMember(inout TeamMember member, in boolean isLeader);
oneway void removeTeamMember(in TeamMember member);
}
在这里,我们使用了in in direction标签来指示数据的传输方式。