# Server
list_inout input: [client item1, client item2]
# Client
list_inout method success
after list: [client item1, client item2, server item1, server item2]
二、AIDL 传递自定义对象
1、Custom Object
Person,这里是位于 src/main/java/com/my/common 包下
java复制代码
package com.my.common;
import android.os.Parcel;
import android.os.Parcelable;
import androidx.annotation.NonNull;
public class Person implements Parcelable {
public String name;
public int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
// 反序列化读取
protected Person(Parcel in) {
name = in.readString();
age = in.readInt();
}
// 序列化写入
@Override
public void writeToParcel(@NonNull Parcel dest, int flags) {
dest.writeString(name);
dest.writeInt(age);
}
public static final Creator<Person> CREATOR = new Creator<Person>() {
@Override
public Person createFromParcel(Parcel in) {
return new Person(in);
}
@Override
public Person[] newArray(int size) {
return new Person[size];
}
};
// 一般返回 0
@Override
public int describeContents() {
return 0;
}
@Override
public String toString() {
return "Person{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
}
public class Person implements Parcelable {
public String name;
public int age;
public Person() {
}
public Person(String name, int age) {
this.name = name;
this.age = age;
}
// 反序列化读取
protected Person(Parcel in) {
name = in.readString();
age = in.readInt();
}
// 序列化写入
@Override
public void writeToParcel(@NonNull Parcel dest, int flags) {
dest.writeString(name);
dest.writeInt(age);
}
// 从 Parcel 重新读入(用于 out/inout)
public void readFromParcel(Parcel in) {
name = in.readString();
age = in.readInt();
}
public static final Creator<Person> CREATOR = new Creator<Person>() {
@Override
public Person createFromParcel(Parcel in) {
return new Person(in);
}
@Override
public Person[] newArray(int size) {
return new Person[size];
}
};
// 一般返回 0
@Override
public int describeContents() {
return 0;
}
@Override
public String toString() {
return "Person{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
}
2、AIDL
Person.aidl
java复制代码
package com.my.common;
parcelable Person;
MyAidlInterface.aidl
java复制代码
package com.my.common;
import com.my.common.Person;
interface IMyAidlInterface {
void person_in(in Person person);
void person_out(out Person person);
void person_inout(inout Person person);
}