最后一次更新:2018-3-25
- android测试版本:Android O
- 内容:验证Android AIDL中的tag(in out inout)
前言
android AIDL有3种不同的tag,在总结之前先参考了这篇博客 https://blog.csdn.net/luoyanglizi/article/details/51958091
但是发现还是不够,于是又自己研究了一下,总结出这篇文档。如果有错误的话希望指正。
验证
IPostMsg.aidl
package aidl;
import aidl.MsgBody;
interface IPostMsg {
void setMsg(String msg);
//(1)没有声明out能返回吗? == 能
MsgBody getMsg1();
//(2)out 不能传入,服务端能修改客户端的b参数
MsgBody getMsg2(out MsgBody b);
//(3)in 能传入,服务端不能修改客户端的b参数
MsgBody getMsg3(in MsgBody b);
//(4)inout 能传入,服务端能修改客户端的b参数
MsgBody getMsg4(inout MsgBody b);
}
MsgBody.aidl
package aidl;
parcelable MsgBody;
package aidl;
import android.os.Parcel;
import android.os.Parcelable;
public class MsgBody implements Parcelable {
public String msgContext;
public int msgId;
public MsgBody() {}
protected MsgBody(Parcel in) {
readFromParcel(in);
}
public static final Creator<MsgBody> CREATOR = new Creator<MsgBody>() {
@Override
public MsgBody createFromParcel(Parcel in) {
return new MsgBody(in);
}
@Override
public MsgBody[] newArray(int size) {
return new MsgBody[size];
}
};
@Override
public int describeContents() {
return 0;
}
/**
* @param dest
* @param flags flags=PARCELABLE_WRITE_RETURN_VALUE:表示该对象从服务端返回客户端
* flags=PARCELABLE_ELIDE_DUPLICATES 程序内部复制变量的时候
*/
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeString(msgContext);
dest.writeInt(msgId);
}
public void