由于一直在做上层App,与AIDL接触的真心很少,上层应用之间的交互使用AIDL不多,可以使用Broadcast、ContentProvider等等。但是最近确实被AIDL摆了一道,决定认真调试一下。
AIDL其实是一个IPC通信机制, 即进程之间也可以相互通信,传递有效数据,那么怎么创建或者说需要什么呢?首先交互需要服务端和客户端,其次主要的方式创建aidl文件,其实质还是通过service进行交互。
1.AIDLServer
1.1 Person的创建
package com.example.edwardadmin.aidlmodel;
import android.os.Parcel;
import android.os.Parcelable;
/**
* Created by EdwardAdmin on 2017/9/24.
*/
public class Person implements Parcelable {
private String mUserName;
private String mUserAge;
public Person(String username, String userage) {
mUserName = username;
mUserAge = userage;
}
public String getmUserName() {
return mUserName;
}
public String getmUserAge() {
return mUserAge;
}
@Override
public String toString() {
return super.toString();
}
protected Person(Parcel in) {
mUserName = in.readString();
mUserAge = in.readString();
}
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeString(mUserName);
dest.writeString(mUserAge);
}
@Override
public int describeContents() {
return 0;
}
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];
}
};
}
注意点:
Model类需要实现 Parcelable,重写重要方法
1.2 IPersonAidlInterface.aidl创建
// IPersonAidlInterface.aidl
package com.example.edwardadmin.aidl;
parcelable Person;
注意点:
parcelable 是小写
1.3 IRomteAidlInterface.aidl创建
// IRomteAidlInterface.aidl
package com.example.edwardadmin.aidl;